2014-03-02 33 views
0

我的HTML输出源是这样的的preg_match忽略新行或制表符

<td><span class="bookdetailtitle">ISBN</span></td> 
          <td>:</td> 
          <td>9788172338299</td> 

我只需要9788172338299打印。如果上面的代码在同一行中,则可以正确打印。但由于有新的行和标签,我没有得到输出。我尝试用/ s替换/ i,但不工作。我希望preg_match匹配字符串,而不管新行或制表符如何,并打印所需的输出。

这里是我的代码:

$page2='<td><span class="bookdetailtitle">ISBN</span></td> 
          <td>:</td> 
          <td>9788172338299</td>'; 

preg_match('/<td><span class="bookdetailtitle">ISBN<\/span><\/td><td>:<\/td><td>(.*)<\/td>/s', $page2, $keywords); 
echo $keywords_out = $keywords[1]; 

回答

0

如果你只需要数,这样的事情?

$page2='<td><span class="bookdetailtitle">ISBN</span></td> 
          <td>:</td> 
          <td>9788172338299</td>'; 

preg_match('/<td>+[0-9]+<\/td>/', $page2, $keywords); 
print_r($keywords); 

http://phpfiddle.org/main/code/43j-t8b

附:很多人会说 - 不要使用正则表达式来解析html。我同意。 :)

我会做这样的事情:

$page=explode('<td>',$page2); 
print_r($page[3]); 

http://phpfiddle.org/main/code/buf-95c

编辑:摆脱去年的TD - >print_r(strip_tags($page[3]));

+0

我可能有文字也...什么在这种情况下做? –

+0

好的,你需要LAST​​的内容(可以是任何东西)? – sinisake