2012-05-31 38 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

只有打破东西需要修正。但是,这是预期的行为。开始阅读正则表达式,特别是什么'.'(点)字符表示:PCRE正则表达式语法:圆点(PHP手册)](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

它的工作原理,但我不能看到抛光信即。 Ę和Ą。 HTML来自卷曲,是

+0

好吧,我已经做到了这一点: preg_match_all('@的 @si”,$内容,$ wynik2)(*); –

+0

@ArturStary如果您使用ISO-8859-2,你当然应该改变超常头;你有没有网址? –