페이지에서 모든 IMDB id를 가져 오는 방법은 무엇입니까? 예를 들어, 모든 ID를 here에서 가져 오려고합니다.페이지 URL의 모든 imdb id를 preg_match_all로 얻으십시오.
http://www.imdb.com/title/tt0948470/
내가 preg_match_all()
를 사용하여 페이지의 모든 ID를 얻을 필요가 - 어느 날 도울 수 : 해당 페이지에서 URL은 형식의입니까?
페이지에서 모든 IMDB id를 가져 오는 방법은 무엇입니까? 예를 들어, 모든 ID를 here에서 가져 오려고합니다.페이지 URL의 모든 imdb id를 preg_match_all로 얻으십시오.
http://www.imdb.com/title/tt0948470/
내가 preg_match_all()
를 사용하여 페이지의 모든 ID를 얻을 필요가 - 어느 날 도울 수 : 해당 페이지에서 URL은 형식의입니까?
좋아, 조리 업 코드를주는거야,하지만 나는 또한 그것을 설명 :
<a>
href
자신의 값의 경우 정규 표현식으로예/(참고
// initialize
$ids = array();
$url = 'http://www.imdb.com/movies-coming-soon/'; # this URL
$expr = '//a/@href'; # these attributes
$regex = '(/title/(tt\d{5,7})/)u'; # matching this regex
$match = 1; # take group 1
// process
foreach((new DOMXpath(@DOMDocument::loadHTMLFile($url)))->query($expr) as $obj)
preg_match($regex, $obj->value, $matches)
&& $ids[$matches[$match]] = 0;
;
$ids = array_keys($ids);
// output
print_r($ids);
Demo : 당신은이 질문 PHP5 태그는, 현재의 안정적인 PHP5 그래서이 예제는 5.4이며, 당신은 컬 래퍼와 PHP5 버전을 구성하는 경우이 코드는 curl
입니다)
편집 :. 낮은 PHP 버전 :
...
// process
$xp = new DOMXpath(@DOMDocument::loadHTMLFile($url));
foreach($xp->query($expr) as $obj)
...
Edit2 : IMDB 태그를 마크 업하는 것만으로 태그가 표시되므로 해당 페이지의 제목 링크가 아닌 해당 목록의 실제 영화 항목을 검색 할 수 있습니다.
이렇게하려면 사용되는 xpath 표현이 약간 향상되어야합니다. 이제 구문 분석이 훨씬 지능적이기 때문에 중복이 없으므로 중복 항목이 없어야하므로이를 제거 할 필요가 없습니다.
구문 분석 오류 : 예기치 않은 구문 오류 T_OBJECT_OPERATOR 12 내 PHP 버전이 지원되지 않는다고 생각합니다. –
@M Sona : 어느 것이 있습니까? 어쨌든, 내가 만든 PHP 버전을 사용하고 있지 않다면 편집해야한다. – hakre
안녕하세요 지금 고맙습니다. 내 PHP 버전은 5.3.13입니다. –
좋아요. 나는 조리 된 코드를 제공하지 않습니다.
href="/title/tt1615065/"
가 지금은 정규식을 구축 할 사소한한다 : 파이어 폭스의 "보기 선택 소스"의 간단한 함수 나 각 링크 형식으로 HREF 속성이 봐 가지고 있습니다. 나는 당신을 좋은
RegEx tutorial 제안하고 욕심 많은 성냥이 일을 할 것이다. 행운을 빕니다!
질문을 형식화하는 데 더 많은 노력을 기울이십시오. 가능한 한 쉽게 읽을 수 있도록 Markdown을 사용하고 가능하면 영문 철자 검사기 (파이어 폭스에서 이것은 편집 상자에 표준으로 제공됨). – halfer