htmlファイルから特定のタグとそのコンテンツを動的に削除したいのですが、preg_replaceを使用することを考えましたが、構文を正しく取得できません。基本的には、たとえば、次のようにする必要があります。 ""の間の(および含む)すべてを何も置き換えないでください。
誰かがこれについて私を助けてくれますか?
htmlファイルから特定のタグとそのコンテンツを動的に削除したいのですが、preg_replaceを使用することを考えましたが、構文を正しく取得できません。基本的には、たとえば、次のようにする必要があります。 ""の間の(および含む)すべてを何も置き換えないでください。
誰かがこれについて私を助けてくれますか?
簡単な男。
Ungreedy regexprを使用するには、U修飾子を使用します。複数行にするには、s修飾子を使用します。それを知って、すべての段落を削除するには、次のパターンを使用します。
#<p[^>]*>(.*)?</p>#sU
説明 :
<p[^>]*>
:冒頭の段落を検出する部分(などの架空のスタイルで)(.*)?
:すべて(「貪欲でないモード」の場合)</p>
:明らかに、最後の段落お役に立てば幸いです。
正規表現でこれを実行しようとしないことをお勧めします。より安全なアプローチは、次のようなものを使用することです
APIリファレンスへのリンクは次のとおりです。 シンプルなHTMLDOMAPIリファレンス
別のオプションは、DOMDocumentを使用することです
ここでの考え方は、実際のHTMLパーサーを使用してデータを解析し、ツリー内を移動/トラバースして、必要な要素/属性/テキストを削除することです。これは、正規表現を使用してHTML内のデータを置き換えようとするよりもはるかにクリーンなアプローチです。
<?php
$doc = new DOMDocument;
$doc->loadHTMLFile('blah.html');
$content = $doc->documentElement;
$table = $content->getElementsByTagName('table')->item(0);
$delfirstTable = $content->removeChild($table);
echo $doc->saveHTML();
?>
データをサニタイズしようとしている場合は、特定の用語やタグをブラックリストに登録するのではなく、ホワイトリストを使用することをお勧めします。これにより、XSS攻撃のサニタイズと防止が容易になります。HTML Purifierと呼ばれるよく知られたライブラリがあります。これは、大きくてやや遅いですが、データの浄化に関して驚くべき結果をもたらします。
タグの間に何があるかわからない場合、フィルの応答は機能しません。
これは、間に他のタグがない場合に機能し、間違いなく簡単なケースです。もちろん、divを必要なタグに置き換えることができます。
preg_replace('#<div>[^<]+</div>#','',$html);
中央に他のタグがある可能性がある場合、これは機能するはずですが、問題が発生する可能性があります。もしそうなら、あなたはおそらく上記のDOMソリューションを使用する方が良いでしょう
preg_replace('#<div>.+</div>#','',$html);
これらはテストされていません
擬似コード
function replaceMe($html_you_want_to_replace,$html_dom) {
return preg_replace(/^$html_you_want_to_replace/, '', $html_dom);
}
以前のHTML
<div>I'm Here</div><div>I'm next</div>
<?php
$html_dom = "<div>I'm Here</div><div>I'm next</div>";
$get_rid_of = "<div>I'm Here</div>";
replaceMe($get_rid_of);
?>
HTML後
<div>I'm next</div>
私はそれがハックの仕事であることを知っています