我的html输出源是这样的
<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 :(得分: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 强>
P.S。很多人会说 - 不要使用正则表达式来解析html。我同意。 :)
我会做这样的事情:
$page=explode('<td>',$page2);
print_r($page[3]);
<强> http://phpfiddle.org/main/code/buf-95c 强>
编辑:摆脱最后的td - &gt; print_r(strip_tags($page[3]));