2010-12-02 3 views
0

이 링크는 HTML 페이지 안에 있습니다.바로 preg_match를 만들 수 없습니다!

<img id="catImage" width="250" alt="" src="http://dev-server2/image2.png" /> 

나는 src의 값을 얻기 위해 원하는 preg_match이 정규식 물건을 모두와 함께 점점 있지 않다. 이게 맞습니까?

preg_match(
    "/<img id=\"catImage\" width=\"[0-9]+\" alt=\"\" src=\"([[a-zA-Z0-9]\/-._]*)\"/", 
    $artist_page["content"], $matches); 

빈 배열이 표시됩니다.

+0

domdocument 또는 xpath를 사용할 수 없습니까? – t00ny

답변

1

무엇보다 먼저 src 속성을 처리하는 정규 표현식 부분은 URL에 나타나는 콜론을 고려하지 않습니다. 나는 가까운 견적을 대신보고 사이에있는 모든 캡처 SRC 부분 (및 기타 속성 값)을 변경 좋을 것

:

... SRC를 = \ "([^ \"] *) \ "....

0
"/<img id=\"catImage\" width=\"[0-9]+\" alt=\"\" src=\"([a-zA-Z0-9/.:_-]*)\"/" 

해야 할 일. 범위 [ ... ] 부분을 편집했음을 유의하십시오. 하이픈 (-)은 특별한 의미가 있으므로 마지막으로 범위에 리터럴로 추가 할 수 있습니다. 또한 : 문자 (thanks @ user333699)를 추가했습니다. 그러나 이러한 힌트는 유효한 URL 문자를 생각해서는 안됩니다. 당신이을 알고 때까지 대신, src 속성의 전체 값이 일치하는 것을 아무것도 일치 :

"/<img id=\"catImage\" width=\"[0-9]+\" alt=\"\" src=\"([^\"]*)\"/" 

즉, 하지 견적 (") 아무것도.

1

이 방법이 효과가 있습니까?

'/<img id="catImage"[^>]+src="([^"]*)"/' 
0

나는 여전히 정규식에서 새로운 편이지만 생각을 던지고 비판을받을 것이라고 생각했다. 표현식은 (?<=(src=")).*(?=["])과 같아야 하는가?) 이것은 src 속성의 내용을 가져옵니다.

0

src 값을 얻으려면 additi를 수행해야합니다. preg_match 이후에 onal 계산. 일치하는 태그가 전체 태그를 반환합니다.

실제로 무엇을하고 싶은지에 따라 XPath으로 다이빙 할 가치가 있습니다.

관련 문제