12

重複の可能性:
PHPでHTMLを解析および処理する方法は?

私はPHPにかなり慣れていません。文字列変数にあるページのbodyタグのテキストがあります。タグが含まれているかどうかを知りたいのですが...タグ名tag1が付けられている場合は、文字列からそのタグのみを取得します。PHPでそれを簡単に行うにはどうすればよいですか?

ありがとう!!

4

3 に答える 3

17

あなたはこのようなものを見ているでしょう:

<?php
$content = "";
$doc = new DOMDocument();
$doc->load("example.html");
$items = $doc->getElementsByTagName('tag1');
if(count($items) > 0) //Only if tag1 items are found 
{
    foreach ($items as $tag1)
    {
         // Do something with $tag1->nodeValue and save your modifications
         $content .= $tag1->nodeValue;
    }
}
else
{
     $content = $doc->saveHTML();
}
echo $content;
?>

DomDocumentは、HTML または XML ドキュメント全体を表します。ドキュメント ツリーのルートとして機能します。したがって、有効なマークアップが作成され、タグ名で要素を検索すると、コメントが見つかりません。

于 2012-11-19T16:46:24.430 に答える
2

別の可能性は正規表現です。

$matches = null;
$returnValue = preg_match_all('#<li.*?>(.*?)</li>#', 'abc', $matches);

$matches[0][x]などの一致全体が含まれ、 など<li class="small">list entry</li>$matches[1][x]内部 HTML のみが含まれlist entryます。

于 2012-11-19T16:53:27.443 に答える
-1

速い方法:

tag1 のインデックス位置を探し、次に /tag1 のインデックス位置を探します。次に、これら 2 つのインデックスの間の文字列をカットします。php.net で strpos と substr を調べてください。また、文字列が長すぎる場合、これは機能しない可能性があります。

$pos1 = strpos($bigString, '<tag1>');
$pos2 = strpos($bigString, '</tag1>');
$resultingString = substr($bigString, -$pos1, $pos2);

$resultingString を正しく取得するには、$pos1 および $pos2 からいくつかの単位を追加および/または減算する必要がある場合があります。(その中に tag1 を含むコメントがない場合はため息をつきます)

正しい方法:

HTML パーサーを調べる

于 2012-11-19T16:41:18.083 に答える