BBCode タグを削除する正規表現を作成しました。これは、許可されたタグを削除するだけです (後でタグなしで文字列の長さをカウントするため)。
私は正規表現に関しては専門家ではないので、1時間後にはこれがかなりうまくいっていることがわかりました:
$pattern = "/\[\/?(i|b|u|url(.*?)|list|li)[\]\[]*\]/i";
$stripped = preg_replace($pattern, '', $text);
許可された 6 つのタグ (およびそれ以上 - 想定されている) と、「url= http://someurl 」のように拡張できる特別なタグ「url」のみを削除します。
いえ
in: [url=someurl]Lorem[/url] ipsum [test]dolor[/test] sit [b]amet[/b].
out: Lorem ipsum [test]dolor[/test] sit amet.
しかし問題は、「url=[sometext]」だけでなく「urlipsum」も削除することです。解析のために「=」を追加しようとしましたが、ポイントに到達できませんでした。
=が付属している場合にのみURLを削除する方法のヒントを誰かが持っていますか?