我想用方括号替换主题标签,并在第一个方括号后添加一个单词,所有字符串都必须小写。
示例字符串:
$str = "This is some text
<p>##IDOBJECT=784##</p> and another some text
<p>##IDOBJECT=1509##</p>
<p>##LATESTARTICLESHOME=321##</p>
<p align=\"center\">##IDOBJECT=321##</p>";
我想将##IDOBJECT=123##
格式的字符串替换为[object idobject=123]
。请注意,这里在第一个object
括号之后添加了额外的[
字,并将IDOBJECT
字符串转换为idobject
。
我尝试使用此/(\##.*?\##)/
正则表达式来查找那些字符串,但无法按照我的描述进行替换。
答案 0 :(得分:4)
您的正则表达式是正确的,您只需要调整捕获位置即可。在#
s中移动组。另外,#
并不特殊,因此不需要转义。
##(.*?)##
演示:https://regex101.com/r/meYYna/1/
...或者如果您想降低收益,还可能误读了preg_replace_callback
和strtolower
。
$str = "This is some text
<p>##IDOBJECT=784##</p> and another some text
<p>##IDOBJECT=1509##</p>
<p>##LATESTARTICLESHOME=321##</p>
<p align=\"center\">##IDOBJECT=321##</p>";
echo preg_replace_callback('/##(.*?)##/', function($match){
return strtolower('[object ' . $match[1] . ']');
}, $str);