2011-02-22 7 views
1

Ok. 틀림없이 정규 표현식을 사용하는 것이 최선이 아닙니다. 내가하고있는 일은 스크린 스크래핑으로, 임베디드 이미지의 img src 값을 원래 도메인을 가리 키도록 수정하려고합니다. 이 일을 끝 무엇PHP 5의 regex 도움이 필요합니다.

preg_match_all('/<img\b[^>]*>/i', $html, $images); 

/> 모든 <을 대체하는 것입니다 : -이 (여기에 현재 하나의 목록에 너무 많은) 내가의 변화를 시도하고있다 정규식입니다. 내가해야할 일은 배열의 페이지에있는 (현재) 5 개의 이미지를 반환하여 src 값을 수정 한 다음 $ html로 다시 작성하는 것입니다.이 HTML은 처음에 설정됩니다. 파일 :

$html = file_get_contents($target_url); 
+3

것 같다. 윌 DomDocument 또는 심지어 간단한 XML하지 않습니까? –

+3

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – Brad

답변

5

기본적으로 정규식으로 사용하지 마십시오. 당신 정규 표현식으로 HTML을 파싱 할 수는 있지만, 그럴 가치는 거의 없습니다.

정품 DOM은 DOMDocument 클래스를 사용하는 대신 구문 분석을 함께 수행 방금 src 속성을 얻으려고 노력하는 것처럼

$dom = new DOMDocument; 
$dom->loadHTML($html); 
$images = $dom->getElementsByTagName('img'); 
foreach ($images as $image) { 
    $image->setAttribute('src', 'http://example.com/' . $image->getAttribute('src')); 
} 
$html = $dom->saveHTML(); 
+1

jQuery에 익숙하다면 http : //를 시도해 볼 수 있습니다. code.google.com/p/phpquery/ – Capsule

관련 문제