好的,所以我不确定我的语法,我确实认为逻辑是自解释的,但我不确定preg_replace是否有效,或者是否需要循环来获得最终结果。
$string = $randomizer->fecthRandomPhrase($cfg['seo']['meta']['descriptions']['single'], 3, $_SERVER['REQUEST_URI']);
返回一个像这样的字符串
Lorem ipsum dolor sit amet,[address1],[address2],[postcode]。奉献精神。 Mauris id dui sem,eget laoreet tellus。 Vivamus lacinia vestibulum odio a lobortis - [region]
然后我在字符串中搜索我想要更改的部分;
$find = array('[address1]','[address2]','[postcode]','[region]');
然后我将这些变量中存储的信息拉出来并放在一个数组中;
$replace = array($ADDRESS1,$ADDRESS2,$POSTCODE,$region);
在返回之前,我应用preg_replace来交换我存储的信息
$phrase = preg_replace($find,$replace,$string);
我是否需要遍历数组$ replace以允许读取每个变量并使替换工作或我是否完全使用了错误的函数?
答案 0 :(得分:2)
str_replace()
可以将数组作为前两个参数,您可能需要考虑这一点。否则,您需要为$find
形成一个正确的正则表达式,以便只调用preg_replace()
一次,这是您目前没有做的。
用法:
$phrase = str_replace( $find, $replace, $string);
现在$phrase
包含您想要的输出。
答案 1 :(得分:2)
像这样使用PHP的str_replace函数
str_replace(array($your_replacement_array), array($your_replace_array), $string);
因此你想要的是这个
str_replace(array('[address1]','[address2]','[postcode]',['region']), array($ADDRESS1,$ADDRESS2,$POSTCODE,$region), $string);
答案 2 :(得分:0)
strtr
也很有用。
在以下情况下,只有strtr
可以检测到。
$text = 'SonyEricsson is based in British, but Sony is based in Japan';
代码:
$search = array(
'SonyEricsson',
'Sony',
);
$replace = array(
'<a href="http://www.SonyEricsson.com">SonyEricsson</a>',
'<a href="http://www.Sony.com">Sony</a>',
);
echo str_replace($search,$replace,$text);
结果:
<a href="http://www.<a href="http://www.Sony.com">Sony</a>Ericsson.com"><a href="http://www.Sony.com">Sony</a>Ericsson</a> is based in British, but <a href="http://www.Sony.com">Sony</a> is based in Japan
代码:
$replace_pairs = array(
'SonyEricsson' => '<a href="http://www.SonyEricsson.com">SonyEricsson</a>',
'Sony' => '<a href="http://www.Sony.com">Sony</a>',
);
echo strtr($text,$replace_pairs);
结果:
<a href="http://www.SonyeEricsson.com">SonyEricsson</a> is based in British, but <a href="http://www.Sony.com">Sony</a> is based in Japan