わかりました、次のような文字列があります。
$disallowedBBC = 'abbr|acronym|anchor|bdo|black|blue|br|color|email|flash|font|ftp|glow|green|html|hr|img|iurl|li|list|ltr|url|quote';
そして、変数に従って許可されていないすべての bbc コードを取り除く必要がpreg_replace
ある実際の文字列 (変数) より:$message
$disallowedBBC
$message = preg_replace("/\[($disallowedBBC)[^]]*](.*?)\[\/($disallowedBBC)\]/is", "$2", $message);
しかし、何らかの理由で、[hr]
タグがこの preg_replace を通過しています。したがって、この場合は次のようになります。
$message = '[hr]Test';
タグを出力しますが、[hr]
削除する必要があります。私の正規表現の何が問題になっていますか?
基本的...
すべての [hr] および/または [hr]Test[/hr] を完全に削除するように変更するにはどうすればよいですか? しかし、[url=http://someurl.com]Some Url[/url] のインスタンスも取り除く必要があります。[color=red]
そして、次のように文字列から削除する必要があります。[color=red]Testing
たとえば[{tag}]
、終了タグがある場合は削除する必要がありますが、終了タグ[/{tag}]
がない場合は開始タグを削除する必要があり、その逆も同様です。次のように、括弧内にある {tag} 内のすべてをキャプチャできる必要があります。 [quote author=Solomon time=7834783470]Just a quote here[/quote] Additional text here...
したがって、これは次のように出力されます。 Just a quote here Additional text here...