2009-09-30 6 views
0

나는 친구들에게 도움이 필요합니다.링크 URL에 대한 PHP 정규식

file_get_contents()를 사용하여 페이지 소스를 얻으려는 경우 소스를 반복하고 모든을 찾고 모든 HREF 값을 배열로 추출합니다.

감사

답변

1

당신은 더 나은 정규 표현식보다는 SimpleXML 또는 DOMDocument 같은 실제 파서를 사용합니다.

$doc = new DOMDocument(); 
$doc->loadHTML($str); 
$aElements = $doc->getElementsByTagName("a"); 
foreach ($aElements as $aElement) { 
    if ($aElement->hasAttribute("href")) { 
     // link; use $aElement->getAttribute("href") to retrieve the value 
    } else { 
     // not a link 
    } 
} 
+0

내가 $ str을가 file_get_contents에서 반환 된 값은()라고 가정한다 여기에서 당신에게 A 요소의 배열을 줄 것이다 DOMDocument를 가진 예입니다? – dotty

+0

@dotty : 예,'$ str'은 HTML 소스 코드가있는 문자열입니다. – Gumbo

+0

글쎄, 당신의 코드를 사용했지만, 포맷되지 않은 태그 등에 대한 에러가 발생했습니다. 그래서 일부 파고를하고 정규식을 찾았습니다 preg_match_all ("/ href = \"(. *?) \ "/", $ html, $ aElements); 어떻게하면 http 소스 만 찾을 수 있습니까? – dotty