可能重复:
php regex <b> to <b>
在我的管理面板中,我有一个textarea,工作人员可以向客户插入消息。
我想在回复中将[[p=304_red]]
转换并检测为两个匹配项。我在想str_replace,但我不能两次。此外,str_replace将限制为一个,工作人员可能会将其添加两次。任何人都建议一个更好的解决方案(preg_replace看起来很棘手和混乱)
[[p=304_red]]
应该返回
<a href="http://site.com/jump?go=304_red">
<img src="http://cdn.com/304_red/large/1.jpg" />
</a>
我的代码只返回网址。
$question = $_GET['replyBoxField'];
$question = str_replace("[[p=", "<a href='http://site.com/jump?go='>", $question);
$question = str_replace("]]", "</a>", $question);
答案 0 :(得分:3)
简单的正则表达式应该适合你。
$question = preg_replace('@\[\[p=([^\]]+)\]\]@i', '<a href="http://site.com/jump?go=$1"><img src= "http://cdn.com/$1/large/1.jpg" ></a>', $question);
=)
答案 1 :(得分:0)
正则表达式不是更好的方法吗?
$filter = "/\[\[p=([^\]\s]+)\]\]/";
$transform = "<a href='http://site.com/jump?go=$1'><img src='http://cdn.com/$1/large/1.jpg' /></a>";
$string = preg_replace($filter, $transform, $string);
答案 2 :(得分:-1)
所有其他答案都错了,请看:
将您的BBCode更改为此[[p=304_sapphire]#[304_sapphire]]
$question = str_replace("[[p=", "<a href='http://domain.com/jump?go=", $question);
$question = str_replace("]#[", "'><img src='http://cdn.com/files/", $question);
$question = str_replace("]]", "/1/small.jpg'/></a>", $question);