0

私のhtmlコードは次のとおりです

<span class="phone">
i want this text
<span class="ignore-this-one">01234567890</span>
<span class="ignore-this-two" >01234567890</span>
<a class="also-ignore-me">some text</a>
</span>

私がやりたいことは、他のすべての要素を残して「このテキストが欲しい」を抽出することです。私は次のいくつかの反復を試みましたが、必要なテキストを返すものはありません:

$name = trim($page->find('span[class!=ignore^] a[class!=also^] span[class=phone]',0)->innertext);

フィルターの simple_html_dom セクションは非常にむき出しであるため、いくつかのガイダンスをいただければ幸いです。

4

1 に答える 1

1

php preg_match ( http://php.net/manual/en/function.preg-match.php )の使用について

以下を試してください:

<?php

$html = <<<EOF
<span class="phone">
i want this text
<span class="ignore-this-one">01234567890</span>
<span class="ignore-this-two" >01234567890</span>
<a class="also-ignore-me">some text</a>
</span>;
EOF;

$result = preg_match('#class="phone".*\n(.*)#', $html, $matches);

echo $matches[1];

?>

正規表現の説明: find text class="phone"次に、行末まで進み、* を使用して任意の文字に一致します。. 次に、 \nで新しい行に切り替え、その行のすべてを * で囲みます。かっこに。

返された結果は、配列 $matches に格納されます。$matches[0] は正規表現全体から返される値を保持し、$matches[1] は閉じ括弧によって返される値を保持します。

于 2013-07-08T21:20:29.847 に答える