php
  • regex
  • 2010-06-01 4 views 0 likes 
    0

    페이지의 모든 이미지의 src를 가져 오려고합니다. 그러나 일부 페이지는 절대 경로를 사용하고 일부 페이지는 사용하지 않습니다. 그래서 나는 이것을하는 가장 좋은 방법이 무엇인지 궁금합니다.페이지의 이미지 절대 경로를 모두 얻으시겠습니까?

    지금은 이것을 사용하고 있습니다. 다른 사람들이 SRC = "b.com/xyz.png"를 사용할 수 있습니다 예를 웹 페이지의 경우 a

    $imgsrc_regex = '#<\s*img [^\>]*src\s*=\s*(["\'])(.*?)\1#im'; 
    
    preg_match_all($imgsrc_regex, $html, $matches); 
    

    이렇게하면 자동으로 URL을 추가 할 수있는 방법이 SRC = "xyz.png"로 이미지가있을 수 있습니다 필요한?

    +1

    정규식이 충분하지 않습니다. – alex

    +1

    파서가 충분하지 않습니다. – Kobi

    답변

    0

    Use a HTML Parser, not a regular expression

    진심으로, HTML 태그를 검색하는 것은 정규 표현식에 대한 잘못된 문제 도메인입니다.

    3

    가장 좋은 방법은 (IMO)의 URL 얻을 DOMDocumentDOMXPath을 사용하는 것입니다 :

    $dom=new domDocument; 
    $dom->loadHTML($html); 
    

    $xpath = new DOMXPath($dom); 
    $result = $xpath->query("//img/@src"); 
    

    Using regex to parse HTML is bad.

    을 또는 당신은 당신의 질문을 명확히하기 위해 무엇을 당신은 정말로 원합니다. 절대 이미지 URL 만 가져 오시겠습니까? 그렇다면 http:으로 시작하는지 확인하십시오 :

    $result = $xpath->query("//img[starts-with(@src, 'http:') or starts-with(@src, 'HTTP:')]/@src"); 
    
    관련 문제