2017-02-04 5 views
0

현재 하나의 값을 검색하기 위해 preg_match를 사용하려고합니다 (여러 값을 가져 오기 전에) 행운이 없습니다. print_r()을 수행하면 배열에 아무것도 저장되지 않습니다.PHP - preg_match를 사용하여 웹 페이지에서 DIV 요소 스크랩

<?php 
$content = '<div class="text-right font-90 text-default text-light last-updated vertical-offset-20"> 
    Reported ETA Received: 
    <time datetime="2017-02-02 18:12">2017-02-02 18:12</time> 
    UTC 
</div>'; 
preg_match('|Reported ETA Received: <time datetime=".+">(.*)</time>(.*)\(<span title=".+">(.*)<time datetime=".+">(.*)</time></span>\)|', $content, $reported_eta_received); 

if ($reported_eta_received) { 
    $arr_parsed['reported_eta_received'] = $reported_eta_received[1]; 
} 
?> 

필수 출력 : 내 상기 코드가 작동하지 않습니다

2017-02-02 18:12 

여기

내가 지금까지 노력하고 무엇을 내 코드입니다. 이 점에 대해 도움을 주시면 감사하겠습니다. 미리 감사드립니다.

+0

체크 아웃 DOMDocument를 http://stackoverflow.com/questions/10366458/php-dom-parsing-a-html-list-into-an-array – Nitin

답변

1

보고 된 ETA Received :와 <time> 태그 사이에 줄 바꿈이 있기 때문에 일치하지 않을 수 있습니다. 그리고 방금 공간을 넣었습니다 (대신 "\ n \ r \ s \ t] + 사용").

또한, 왜 당신은 단순히 사용하지 마십시오

preg_match('|<time datetime=".*?">(.*?)</time>|', $content, $reported_eta_received);

은 또한 사용할 수 있습니다 ?P<name>을 쉽게 포인팅을 위해 (숫자 대 연관 : 더 캡처 그룹을 넣으면 숫자가 변경할 수 있습니다).

preg_match('|<time datetime=".*?">(?P<name>.*?)</time>|', $content, $match); print_r($match); // $match['name'] should be there if matched.

+0

덕분에 그것을 잘 일하고있어. – Faisal