0

好的,所以我不确定我在这个语法上的语法,我认为逻辑是不言自明的,但我不确定 preg_replace 是否可以工作,或者是否需要循环来获得最终结果。

$string = $randomizer->fecthRandomPhrase($cfg['seo']['meta']['descriptions']['single'], 3, $_SERVER['REQUEST_URI']);

返回这样的字符串

Lorem ipsum dolor sit amet,[address1],[address2],[postcode]。consectetur adipiscing 精英。Mauris id dui sem,eget laoreet Tellus。Vivamus lacinia vestibulum odio a lobortis - [地区]

然后我在字符串中搜索我想要更改的部分;

$find = array('[address1]','[address2]','[postcode]','[region]');

然后我提取存储在这些变量中的信息并将它们放在一个数组中;

$replace = array($ADDRESS1,$ADDRESS2,$POSTCODE,$region);

在返回短语之前,我应用 preg_replace 来交换我存储的信息

$phrase = preg_replace($find,$replace,$string);

我是否需要遍历数组 $replace 以允许读取每个变量并让替换工作,还是我完全使用了错误的函数?

4

3 回答 3

2

str_replace()可以将数组作为其前两个参数,您可能需要考虑使用它。否则,您需要形成一个适当的正则表达式$find,以便只调用preg_replace()一次,而您目前没有这样做。

用法:

$phrase = str_replace( $find, $replace, $string);

现在$phrase应该包含您想要的输出。

于 2013-05-14T16:15:10.997 回答
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);
于 2013-05-14T16:15:18.393 回答
0

strtr也很有用。

在以下情况下,只能按strtr预期工作。

$text = 'SonyEricsson is based in British, but Sony is based in Japan';

str_replace

代码:

$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
于 2013-05-14T16:44:29.533 回答