2009-04-22 4 views
5

좋아요, 저는 DOM 파서를 사용해야한다는 것을 알고 있습니다. 그러나 이것은 나중에 기능에 대한 개념 증명의 일부인 코드를 스텁 (stub)하기위한 것입니다. 제한된 테스트 코드 세트. HTML은, 즉, 빈 문자열로PHP에서 regex를 사용하여 HTML 속성 바꾸기

width="number" height="number" 

을 대체

나는 폭을 제거하기 위해 노력하고있어 및 높이 덩어리의 속성.

function remove_img_dimensions($string,$iphone) { 
    $pattern = "width=\"[0-9]*\""; 
    $string = preg_replace($pattern, "", $string); 

    $pattern = "height=\"[0-9]*\""; 
    $string = preg_replace($pattern, "", $string); 

    return $string; 
} 

을하지만 그것은 작동하지 않습니다

기능

나는 순간에 같은 외모를 작성하는 것을 시도하고있다.

어떻게하면됩니까?

답변

7

정규 표현식은 Python, Java 및 C#과 같은 문자열 리터럴 형식으로 지정되지만 PHP는 Perl, JavaScript 및 Ruby와 같은 정규식 구분 기호를 사용해야합니다.

큰 따옴표 대신 큰 따옴표를 사용하면 큰 따옴표와 백 슬래시 같은 문자를 이스케이프해야 할 필요가 없습니다. 큰 따옴표가있는 문자열에 대한 이스케이프 규칙이 놀라운 일일 수 있기 때문에 들어갈 수있는 좋은 습관입니다.

마지막으로, 당신은 간단한 교대에 의해 하나에 당신이 개 교체를 결합 할 수 있습니다 :

$pattern = '/(width|height)="[0-9]*"/i'; 
+0

완벽한 - 덕분에 많이! –

4

패턴에 시작/끝 패턴 문자가 필요합니다. 이처럼 :

$pattern = "/height=\"[0-9]*\"/"; 
$string = preg_replace($pattern, "", $string); 

가 "/"보통 문자이지만, 대부분의 문자가 작동합니다 ("| 패턴 |", "# 패턴 #", 무엇이든).

0

문자열에서 정규 표현식을 둘러 쌀 필요가있는 괄호 (//, || 또는 다른 여러 문자 쌍이 될 수 있음)가 누락 된 것 같습니다. 이 양식에 $ 패턴 할당을 변경 시도 :

:

$pattern = "/width=\"[0-9]*\"/"; 

을 ... 당신은 대소 문자를 구분하지 않고 비교를 할 수 있기를 원하는 경우, '내가'따라서, 문자열의 끝에 추가

$pattern = "/width=\"[0-9]*\"/i"; 

희망이 있습니다. David