让我说我有字符串
$pattern = "Hello my name is %name%. I'am %age% years old and I live in %city%."
用于替换此字符串的索引数组
$replacementArray = array("name"=>"Peter", "age"=>"15", "city"=>"Stockholm");
名为数组键的公告通知与我的模式键相同)
“名称”=>“彼得”,我的名字是%name%
最有效的方法是什么,我该怎么做。
我不确定,但我认为它需要一些正则表达式替换。我是PHP的新手。
答案 0 :(得分:1)
这应该适合你:
(这里我只是遍历所有替换,然后在模式中用str_replace()
替换)
<?php
$pattern = "Hello my name is %name%. I'am %age% years old and I live in %city%.";
$replacementArray = ["name" => "Peter", "age" => "15", "city" => "Stockholm"];
foreach($replacementArray as $k => $v) {
$pattern = str_replace("%$k%", $v, $pattern);
}
echo $pattern;
?>
输出:
Hello my name is Peter. I'am 15 years old and I live in Stockholm.
您也可以反过来执行此操作,只需在每个键之前和之后追加%
,如下所示:
echo str_replace(array_map(function($v){return "%$v%";}, array_keys($replacementArray)), array_values($replacementArray), $pattern);
答案 1 :(得分:0)
此表达式将从您的字符串中获取模式键
preg_match_all('/\%(.*?)\%/',$pattern, $matches);
答案 2 :(得分:0)
您可以使用正则表达式或尝试此
循环$ replacement array
foreach($replacement as $key=>$val){
$pattern = str_replace($key,$val,$pattern);
}