我想从字符串中获取匹配项,并在数组中将它们用作键,以将字符串中的值更改为数组的值。
如果更容易实现,我可以从%更改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;
答案 0 :(得分:1)
您可以将array_map
与preg_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