HTML タグを削除するコードを書きましたがa<b
、文字列の型も削除しています。2<3
やのような文字列を削除しないようにしたいa<b
。
$term="a<b";
echo "Text is--->".preg_replace('/(?:<|<).+?(?:>|>)/', '', $term);
LT または GT を削除せずに、文字列内の html タグを削除するにはどうすればよいですか?
申し訳ありませんが、十分に検証していませんでした。
以下のphp5-cli式を確認しました。
(?:<|<)\/?([a-zA-Z]+) *[^<\/]*?(?:>|>)
PHP コードは次のようになります。
#!/usr/bin/php
<?php
$str = "<html></html>
a<b 1<2 3>1
<body>1>2</body>
<style file=\"'googe'\" alt=\"google\">hello world</style>
<have a good efghijknopqweryuip[]asdfgghjkzxcv bnm,.me>hello world<> google com</s>
<a se=\"font: googe;\">abcde</a>";
echo "text--->".preg_replace('/(?:<|<)\/?([a-zA-Z]+) *[^<\/]*?(?:>|>)/', '', $str)."\n";
?>
結果:
text--->
a<b 1<2 3>1
1>2
hello world
hello world<> google com
abcde
PHPのストリップタグ機能を利用する
echo strip_tags($html)
文字列にアンカータグが含まれていて、コンテンツを含むこのタグを削除したい場合、このメソッドが役立ちます。
$srting = '<a title="" href="/index.html"><b>Some Text</b></a> a<b';
echo strip_tags_content($srting);
function strip_tags_content($text) {
return preg_replace('@<(\w+)\b.*?>.*?</\1>@si', '', $text);
}
出力:
a < b
Strip_tags 関数は良い解決策です。
ただし、正規表現が必要な場合は、以下の式を使用してください。
(?:<|<)\/?([a-z]+) *[^\/(?:<|<)]*?(?:>|>)
strip_tagsを使用する
//If you want to allow some tags
$term = strip_tags($term,"<b>");