使用正则表达式替换img bbcode可选的宽度和高度?

时间:2014-09-14 18:32:52

标签: php regex bbcode

我真的没有得到正确的解决方案。

我的标准img替换代码是:

preg_replace('~\[img](.*?)\[/img\]~s','<img src="$1" />',$text);

当然有效。但是如果设置了宽度和高度,我试图替换bbcode。 但那是可选的,所以如果只设置了1个维度,它也应该有效。

bbcode看起来像:[img = 12x12]图片链接[/ img]

所以bbcode应该是这样的:

 preg_replace('~\[img=(.*?)x(.*?)\](.*?)\[/img\]~s','<img width="$1" height="$2" src="$3" />',$text);

我想我弄错了。 Anybidy知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

试试这个正则表达式:

preg_replace('~\[img=?(\d+)?x?(\d+)?\](.*?)\[/img\]~s','<img width="$1" height="$2" src="$3" />',$text);

您编码的方式,它不会匹配您想要的所有3个案例:[img][img=NN][img=NNxNN]。它只会在提供两个尺寸的情况下匹配。

答案 1 :(得分:0)

你的正则表达式绝对有用。我会使用\d+来确保值存在并且是数字类型:

~\[img=(\d+)x(\d+)\](.*?)\[/img\]~s

您在使用代码时遇到什么错误,或者更确切地说,您希望匹配哪些字符串,但是您没有?