重複の可能性:
PHPでHTMLを解析および処理する方法は?
私はPHPにかなり慣れていません。文字列変数にあるページのbodyタグのテキストがあります。タグが含まれているかどうかを知りたいのですが...タグ名tag1が付けられている場合は、文字列からそのタグのみを取得します。PHPでそれを簡単に行うにはどうすればよいですか?
ありがとう!!
重複の可能性:
PHPでHTMLを解析および処理する方法は?
私はPHPにかなり慣れていません。文字列変数にあるページのbodyタグのテキストがあります。タグが含まれているかどうかを知りたいのですが...タグ名tag1が付けられている場合は、文字列からそのタグのみを取得します。PHPでそれを簡単に行うにはどうすればよいですか?
ありがとう!!
あなたはこのようなものを見ているでしょう:
<?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 ドキュメント全体を表します。ドキュメント ツリーのルートとして機能します。したがって、有効なマークアップが作成され、タグ名で要素を検索すると、コメントが見つかりません。
別の可能性は正規表現です。
$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
ます。
速い方法:
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 パーサーを調べる