2011-07-05 4 views
1

어려운 질문 (나를 위해) 누군가 이미 저를 도울 수 있기를 바랍니다. 나는 IMDB 사이트에서 배우의 이미지를 얻을이 코드를IMDB 액터 페이지에 정규 표현식이 적용된 PHP preg_match_all

$string = FetchPage($url); 
$image_regex_src_url = '/<td id="img_primary"[^>]*'. 'src=[\"|\'](.*)[\"|\']/Ui'; 
$img_tag_array = $out[0]; 
$image_regex_src_url = '/<img[^>]*'.'src=[\"|\'](.*)[\"|\']/Ui'; 
preg_match_all($image_regex_src_url, $string, $out, PREG_PATTERN_ORDER); 
$images_url_array = $out[1]; 

케빈 코스트너를 타고 여기 예를 들어 : http://www.imdb.com/name/nm0000126/

내가 변수로 원 오스카의 정수를 가져 오기 위해 내 코드에 적응하기 위해 노력하고있어 지금까지이 라인에서 "2 Oscars를 획득했습니다." 그리고 라인에서 다른 변수 자신의 생년월일에 "출생 : 케빈 마이클 코스트너 1955년 1월 18일 린 우드, 캘리포니아, 미국에서"

이런 일에 종료하려면 :

$actor_oscars = 2; 
$actor_birthdate = "January 18, 1955"; 

건이며, 정규 표현식에 대한 지식은 매우 제한적이며 이미 (시도 및 오류를 기준으로) 이것을 혼자서 만들려고 시도했지만 완전히 실패했습니다! 나를 도울 좋은 영혼이 있습니까?

추신 : 나는 여기에 코드를 넣으려고했지만 stackoverflow가 꽤 보이지만 그다지 전혀 성공하지 못하는 것 같습니다.

미리 감사드립니다.

preg_match('/<td[^>]*id="img_primary".+?<img[^>]*src="([^"]+)"/s', $str, $matches); 

오스카 원 :

preg_match('/Won\s(\d+)\sOscars\./', $str, $matches); 

출생 월 - 일 :

각는 preg_match 라인 $ 경기 후
+0

올바른 파서를 사용하는 것이 좋습니다 (정규식을 사용하여 HTML을 구문 분석하지 마십시오). 적어도 그 이미지를 위해. ;-) – Qtax

+0

DOM을 사용하면 훨씬 좋습니다. http://php.net/manual/en/book.dom.php – NorthGuard

+0

나는 항상 내가하고있는 일을 성취하기위한 더 나은 방법이있을 것이라고 생각했지만, 지식은 제한되어 있고 내가 이해하는 방법으로 만 일합니다. 이 시간 동안, 나는 단지 한 번만 데이터를 가져오고 싶기 때문에 (물론) 이미 작업 할 코드가 있기 때문에이 메서드를 계속 사용해야 할 것입니다. : | –

답변

2

[1] 원하는 결과

이미지 URL이 포함됩니다

preg_match('/<a href="[^"]*birth_monthday[^"]*">(.+?)<\/a>/', $str, $matches); 

출생 연도 :

preg_match('/<a href="[^"]+birth_year[^"]+">(.+?)<\/a>/', $str, $matches); 
+0

환상적인! 나는 공식적으로 PHP 전문가를 필요로 할 때 당신에게 나의 가야 사람을 선언! :) 당신이 저를 도왔던 시간과 노력에 감사드립니다! –

+0

한 가지만 더 ... 가을 ... 당신의 코드는 배우가 여러 오스카상을 수상했을 때만 작동합니다. 배우가 오스카상을 수상하면 무엇을해야하는지 알 수 있습니까? ("Oscar Won"페이지에 나온다) 만약 그가 하나도 없다면 ... 나는 varible이 정의되어 있는지, 0으로 설정되어 있지 않은지 확인해야합니다. –

+0

'if (preg_match ('/ Won \ sOscar /', $ str)) { $ oscars = 1; } elseif (preg_match ('/Won\s(\d+)\sOscars\./', $ str, $ matches)) { $ oscars = $ matches [1]; } else { $ oscars = 0; }' – nobody

관련 문제