用存储在数组中的变量替换字符串


Replacing string with variables stored in an array

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

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

返回如下字符串

Lorem ipsum dolor sit amet,[address1], [address2], [postcode]。奉献奉献的精英。毛里斯将会看到,他将会看到,他将会告诉我们。前庭裂唇虫-[区域]

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

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

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

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

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

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

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

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

用法:

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

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

像这样使用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);

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
<标题> strtr h1>
$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