2010-12-09 3 views
0

안녕하세요 사랑 커뮤니티 맞게 필요PHP 정규식 잘 실행 - 지금은 일부

난 preg_match를 몇 가지 도움이 필요 - 내가 allready 잘 실행되는 코드를 최적화 할! 결과에 HTML 태그의 오버 헤드가 아닌 결과를 얻으려고합니다. 즉, 정규식을 약간 조정해야한다는 의미입니다. 어떻게 (아주 좋은 allready) 코드를 향상시킬 수 있습니다!?

<?php 

$content = file_get_contents("< - URL - >"); 

var_dump($content); 

$pattern = '/<td>(.*?)<\/td>/si'; 
preg_match_all($pattern,$content,$matches); 

foreach ($matches[1] as $match) { 
    $match = strip_tags($match); 
    $match = trim($match); 
    var_dump($match); 
} 

?> 

여기에 URL을 참조하십시오 : link text

흠을 - 내가 정규식을 약간 조정할 필요가 ... 등나무의 사람이 저를 제공합니다.

각각의 아이디어와 tipp 크게 관련 제로

+0

당신이 무엇을 찾고 있는지 설명 할 수 있을까요? 동일한 출력이지만 빠른 처리가 가능합니까? 다른 출력? – nickf

+0

네, 정확하게 당신의 질문은 무엇입니까? –

+0

잘 html이 유효하지 않습니다. 나는 좋은 정규 표현식이나 다른 접근법을 가질 필요가있다. 글쎄, 내가 가진 정규식은 100 %에 맞지 않는다. 흠, 펄에서는 테이블 태그를 제거하는 방법이 있습니다 ... isn t'it – zero

답변

0

을 이해할 수있을 것이다 당신이 HTML 페이지에서 데이터를 긁어하려고하는 것으로 보인다. 이 경우 정규 표현식을 사용하여 정보를 추출해서는 안됩니다. 대신 DOMDocument 클래스를 살펴보십시오.

DOMDocument은 XML 입력이 필요하므로 "정리가 잘 된"프로세스는 HTML을 XML로 구문 분석 할 준비가 필요합니다. 이를 수행하는 한 가지 편리한 방법은 "tidy" extension을 사용하는 것입니다. 사용법에 대해서는 "Tidying up your HTML with PHP 5"을 참조하십시오.

편집 :How can I scrape a website with invalid HTML

+1

getElementsByTagName을 사용하여 PHP에서 DOMDocument로 html 요소를 가져올 수 있습니다. 이 제안에 +1하십시오. 더 많은 정보는 여기에 있습니다 : http://www.php.net/manual/en/domdocument.getelementsbytagname.php – Tek

+0

안녕하세요 대니얼, 안녕하세요. 당신 getElementsByTagName을 실행 sugest - 나는 이것을 자세히 살펴볼 것이다! 웹 사이트에 잘못된 코드가 있습니다. 불행한 점은 REGEX를 사용하면 좋지 않은 접근이라고 생각합니다. – zero