从preg_replace获取匹配项并将其用作数组键

时间:2019-05-18 00:43:36

标签: php arrays string preg-replace

我想从字符串中获取匹配项,并在数组中将它们用作键,以将字符串中的值更改为数组的值。

如果更容易实现,我可以从%更改Fantasy标签!还可以解决JS / jQuery中没有问题的任何问题。该脚本用于外部JS文件并更改一些变量,这些变量我无法从JS / jQuery访问。所以我想用PHP插入它们,然后将它们缩小并发送到浏览器。

$array = array ( 'abc' => 'Test', 'def' => 'Variable', 'ghi' => 'Change' );
$string ='This is just a %!abc!% String and i wanna %!ghi!% the %!def!%';

$string = preg_replace('%!(.*?)!%',$array[$1],$string);
echo $string;

1 个答案:

答案 0 :(得分:1)

您可以将array_mappreg_quote结合使用,以将数组的键转换为正则表达式,然后将数组的值用作preg_replace数组形式的替换字符串:< / p>

$array = array ( 'abc' => 'Test', 'def' => 'Variable', 'ghi' => 'Change' );
$string ='This is just a %!abc!% String and i wanna %!ghi!% the %!def!%';
$regexes = array_map(function ($k) { return "/" . preg_quote("%!$k!%") . "/"; }, array_keys($array));
$string = preg_replace($regexes, $array, $string);
echo $string;

输出:

This is just a Test String and i wanna Change the Variable

Demo on 3v4l.org