preg_match,只在本地工作

时间:2012-05-19 13:36:20

标签: php regex

这是本地有效的代码。

$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) ;

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

由于

1 个答案:

答案 0 :(得分:2)

试试这个:

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

它无效,因为您关闭了忽略HTML标记属性的标记。 请参阅[^>]*它将与之前的所有内容(属性)>匹配,作为示例的class="prodname"部分。 请参阅i标志。不会区分案件。可以匹配hH