2012-06-07 3 views
0

나는이 기능을 실행하기 위해 노력하고 정규 표현식을 사용하지 : 당신은 내가 설정 한 패턴으로 볼 수는 PHP

public function get_referring_domains(){ 
     $pattern='/<p>Referring<b>Class C subnets<\/b>: <b>(.*?)<\/b> <\/p>/'; 
     $result= preg_match_all($pattern, $this->dom, $matches, PREG_SET_ORDER); 
     return $result; 
    } 

내가 얻고 싶은 결과는 숫자입니다, 내가 원하는 get : ([0-9] +) ...하지만 매번 0이됩니다. 패턴이 일치하지 않는 이유는 무엇입니까?

$pattern='/<p>Referring[\s]{1}<b>Class[\s]{1}C\ssubnets</b>:[\s]{1}<b>(.*?)</b>[\s]{1}</p>/i'; 

을 나는이 얻을 :

으로, preg_match_all() [function.preg-완전 일치] : 알 수없는 수정 'B'

내가 일치하도록 노력하고 무엇인가
<p>Referring <b>Class C subnets</b>: <b>4,613</b> </p> 

는 HTML 페이지

012의 일부

업데이트. 당신은 약간의 공백이 누락

+0

를 참조하면 뒤에 공백을이 있어야합니다 :

이 읽기? –

+0

일치하려는 대상의 일부 샘플 텍스트 (포함되지 않은 n 코드)를 추가 할 수 있습니까? – buckley

+0

html 페이지 ... 페이지를 검색하여 패턴을 찾으십시오 –

답변

2

, 그것은이 있어야한다 :이 변경 또한

$pattern = '/<p>Referring <b>Class C subnets<\/b>: <b>(.*?)<\/b> <\/p>/'; 

, 정말 대신 정규식의있는 DOMDocument를 사용하는 것이 좋습니다 것입니다. 이 표현의 입력 공급하고 무엇 How to parse and process HTML with PHP?

+0

정규식 대신 DomDocument를 사용하는 이유는 무엇입니까? –

+0

큰 질문입니다! [당신은 정규식으로 HTML을 구문 분석 할 수 없습니다 bobince] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) – Jeroen

+0

감사합니다 설명,하지만 정규 표현식 나를 위해 지금까지 작동 –