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 に答える