我有一个preg_replace的问题:由于多语言,我为date()函数中的每个值创建了一个数组:
$a = array( "d" => "19", "l" => "Saturday", "F" => "October", "Y" => "", ...);
现在我希望有一个像$s = "{l}, the {d}. of {F} {Y}";
我的问题是,如何使用preg_replace或sth将括号中的表达式替换为数组的值?我的问题是我不知道如何根据{}括号内的字符获取$a["Y"]
。
答案 0 :(得分:1)
检查serialize或json_encode,然后替换字符串。
http://php.net/manual/en/function.json-encode.php http://php.net/manual/en/function.serialize.php
答案 1 :(得分:1)
$a = array( "d" => "19", "l" => "Saturday", "F" => "October" , "Y" => "");
$s = "{l}, the {d}. of {F} {Y}";
function callback($m) {
global $a;
return $a[$m[1]];
}
echo preg_replace_callback("/\{(.)\}/", "callback", $s);
答案 2 :(得分:0)
你基本上在做字符串替换;正则表达式在这里相当矫枉过正。我会创建一个像这样的函数
function insertTokens($string, $values)
{
foreach ($values as $key => $value)
{
$string = str_replace('{'.$key.'}', $value);
}
return $string;
}
$newString = insertTokens($s, $a);