1

这是在本地有效的代码。

$str = <<<SSS
  <H1 class="prodname">Alison Raffaele Reality Base</H1>Foundation, Skintone 1 - Fairest&nbsp;1 fl oz (30 m)<p class="tip"><table id="TblProdForkSellCopy" width="100%" border="0"><tr><td class="contenttd"><p>Get full, flawless coverage with this luxurious oil-free formula. Continually refreshes and re-hydrates your skin for 12+ hours - and guards against premature aging by deflecting damaging free radicals. </p></td></tr></table><p></p>
SSS;

preg_match("~</[hH]1>(.+?)<p~",$str,$name)  ;
var_dump($name) ;

但是在实际解析页面时不起作用。为什么 ?链接到页面。我的代码有什么问题吗。我已经从页面完全复制粘贴。哦,不起作用,我的意思是它匹配得太多了。当在本地匹配时,第一个'<p'不包括在内,但在我的实际脚本中(当页面从网上下载时)'<p'由于某种原因它包含标签。

谢谢

4

1 回答 1

2

试试这个:

/<h1[^>]*>([^<]+)/i

它不起作用,因为您正在关闭标签而忽略了 HTML 标签属性。作为示例的一部分,请参阅[^>]*它将与所有 before(the attributes) 匹配。见国旗。不会区分大小写。可以匹配和。>class="prodname"ihH

于 2012-05-19T13:55:06.720 回答