2012-05-31 1 views
1

:PHP 용으로, preg_match_all 정규 표현식 및 브레이크 라인은 여기 나에게 정규 표현식과 함수의

preg_match_all('|<span class=\"Menu1\">(.*?)</td>|U',$contents,$wynik2); 

그것은 작동 :

<tr> 
     <td width="30%" ><span class="Menu"> Nazwa zawdsdu: </td> 
     <td width="70%"> <span class="Menu1">PRACOWNIK BARU </td> 
     </tr> 

하지만이 작동하지 않습니다

<td width="70%"> <span class="Menu1">PRACA W MC DONALDS PRACE PORZĄDKOWE, PRZYJĘCIE DOSTAWY 
WYMAGANA KSIĄŻECZKA SANEPIDOWSKA, CHĘCI DO PRACY 
KONTAKT TEL. 794295401 </td> 

나 ' 빈 배열이 있습니다. 나는 그것이 '새로운 라인'에 의한 것이라고 생각합니다. 어떻게 해결할 수 있습니까?

+0

만 깨진 가지 수정이 필요합니다. 그러나 이것이 의도 한 동작입니다. 정규 표현식, 특히'.' (Dot) 문자의 의미는 다음과 같습니다 : [PCRE regex syntax : Dot (PHP Manual)] (http://www.php.net/manual/en/regexp.reference. dot.php). – hakre

답변

2

s 수정자를 정규 표현식 끝에 추가하십시오.

3
죄송

,하지만 난이 DOMDocument를 예제를 제공 할 의무를 느꼈다 :

$d = new DOMDocument; 
$d->loadHTML($html); 

$xpath = new DOMXPath($d); 

foreach ($xpath->query('//span[@class="Menu1"]') as $node) { 
    echo $node->nodeValue, PHP_EOL; 
} 

이 스크레이퍼에 적용 (url 및 후 필드 편집 됨)

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'http://redacted'); 
curl_setopt($ch, CURLOPT_POSTFIELDS, 'redacted'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

$d = new DOMDocument; 
libxml_use_internal_errors(true); 

$d->loadHTML(curl_exec($ch)); 
libxml_clear_errors(); 

$xpath = new DOMXPath($d); 

foreach ($xpath->query('//span[@class="Menu1"]') as $node) { 
    echo $node->nodeValue, PHP_EOL; 
} 
+0

작동하지만 폴란드어 문자 ie 볼 수 없습니다. Æ 및 Ą. HTML은 CURL에서 가져온 것으로,

+0

입니다.이 작업을 완료했습니다 : preg_match_all ('@ (. *?) @si ', $ contents, $ wynik2); –

+0

@ArturStary iso-8859-2를 사용한다면 물론 메타 헤더를 ​​변경해야합니다. 아마 URL이 있습니까? –