【发布时间】:2015-11-06 22:31:27
【问题描述】:
我想对必须有多个条件的字符串进行替换,并根据它们进行替换。我知道我可以在 str_replace() 中使用数组作为搜索字符串,但我的问题是字符串的一部分是动态的。
例如:
字符串如下所示:
<p>SOME TEXT</p>
<p>SOME TEXT (dynamic content 1)</p>
<p>SOME TEXT (dynamic content 2)</p>
<p>SOME TEXT</p>
替换后的字符串应该是这样的
<p>SOME <span>TEXT</span></p>
<p>SOME <span>TEXT (dynamic content 1)</span></p>
<p>SOME <span>TEXT (dynamic content 2)</span></p>
<p>SOME <span>TEXT</span></p>
如示例所示,搜索词是TEXT 和TEXT (dyn cont),我的问题是我不知道如何为第二个搜索词设置条件,其中括号之间的内容是动态的。
基本上,如果有 2 个不变的词,我会做这样的事情:
if(strpos($str, 'TEXT') !== FALSE || strpos($str, 'TEXT ()') !== FALSE){
echo str_replace(array('TEXT', 'TEXT ()'),
array('<span>TEXT</span>', '<span>TEXT ()</span>'),
$str);
}
else {
echo $str;
}
但显然这在这种情况下不起作用。
我怎样才能做到这一点?
【问题讨论】:
-
正则表达式可以解决问题。 str_replace 无法匹配通配符,因此除非您先进行大量搜索/定位,否则您不能为此使用 str_replace。
标签: php regex string str-replace