多くの人が言っているように、これを正規表現で行うべきではありません。イメージタグを置き換えることを見てきた例のほとんどは素朴で、あらゆる状況でうまくいかないでしょう。すべてのことを考慮に入れる正規表現(あなたが最初によく整形されたXHTMLを持っていると仮定)は、非常に長く、非常に複雑で、後で理解したり編集したりするのが難しいでしょう。そして、それが正しく動作すると思っても、その可能性はありません。実際には、(X)HTMLを解析するために特別に作られたパーサを使用するべきです。ここで
は、PHPのDOM拡張機能を使用して、正規表現せずにそれを正しく行うには方法は次のとおりです。
// add a root node to the XHTML and load it
$doc = new DOMDocument;
$doc->loadXML('<root>'.$str.'</root>');
// create a xpath query to find and delete all img elements
$xpath = new DOMXPath($doc);
foreach ($xpath->query('//img') as $node) {
$node->parentNode->removeChild($node);
}
// save the result
$str = $doc->saveXML($doc->documentElement);
// remove the root node
$str = substr($str, strlen('<root>'), -strlen('</root>'));
可能な重複:http://stackoverflow.com/questions/1107194/php-remove-img-tag- from-string – Jeroen
ブラックリスト(禁止を削除)を使用するのではなく、ホワイトリストを使用しないでください(許可のみ)。代わりに適切なHTMLサニタイザを使用してください。 – Gumbo
@Jerenen Offerijns:悪いアドバイス。 [Karo96の答え](http://stackoverflow.com/questions/6426139/preg-match-all-how-to-remove-img-tag/6426182#6426182)に私のコメントを参照してください。 – Gumbo