我真的没有得到正确的解决方案。
我的标准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知道如何解决这个问题吗?
答案 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
您在使用代码时遇到什么错误,或者更确切地说,您希望匹配哪些字符串,但是您没有?