1

次のようなWebページのソースコードからいくつかの文字列を抽出しようとしています:

<p class="someclass">
String1<br />
String2<br />
String3<br />
</p>

これらの文字列だけが単一の改行 (
) で終わると確信しています。それ以外はすべて、2 つ以上の改行で終わります。私はこれを使ってみました:

preg_match_all('~(.*?)<br />{1}~', $source, $matches);

しかし、それは想定どおりには機能しません。これらの文字列とともに、他のテキストも返します。

4

4 に答える 4

3

DOMDocument と XPath が助けになります。

$html = <<<EOM
<p class="someclass">
String1<br />
String2<br />
String3<br />
</p>
EOM;

$doc = new DOMDocument;
$doc->loadHTML($html);
$xp = new DOMXPath($doc);

foreach ($xp->query('//p[contains(concat(" ", @class, " "), " someclass ")]') as $node) {
    echo $node->textContent;
}

デモ

于 2013-06-18T13:36:49.453 に答える
-1

これを試して:

preg_match_all('~^(.*?)<br />$~m', $source, $matches);
于 2013-06-18T13:25:08.780 に答える