0

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を削除する方法のヒントを誰かが持っていますか?

4

3 に答える 3

1

試す:

$pattern = '/\[\/?(i|b|u|url(=[^\]]+)?|list|li)[\]\[]*\]/i';
于 2010-01-10T11:53:29.423 に答える
0
  $pattern = "/\[\/?(i|b|u|url=(.*?)|url(?=\])|list|li)[\]\[]*\]/i";
于 2010-01-10T12:02:57.963 に答える
0

量指定子の「貪欲さ」を変更したり、「U」パターン修飾子を追加したり、「.*?」の疑問符を削除したりすることができます。PHP docを参照してください。

于 2010-01-10T12:05:18.727 に答える