0

我对 preg_replace 有疑问:由于多语言,我为 date() 函数中的每个值创建了一个数组:

$a = array( "d" => "19", "l" => "Saturday", "F" => "October", "Y" => "", ...);

现在我想要一个字符串$s = "{l}, the {d}. of {F} {Y}";

我的问题是,如何使用 preg_replace 或 sth 将括号中的表达式替换为数组的值?我的问题是我不知道如何$a["Y"]根据 {} 括号内的字符来获取。

4

3 回答 3

1

检查 serialize 或 json_encode ,然后替换字符串。

http://php.net/manual/en/function.json-encode.php http://php.net/manual/en/function.serialize.php

于 2013-10-19T12:18:37.667 回答
1

这可以使用preg_replace_callback

$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);
于 2013-10-19T12:25:08.370 回答
0

您基本上是在进行字符串替换;正则表达式在这里非常过分。我会像这样创建一个函数

function insertTokens($string, $values)
{
    foreach ($values as $key => $value)
    {
        $string = str_replace('{'.$key.'}', $value);
    }
    return $string;
}

$newString = insertTokens($s, $a);
于 2013-10-19T12:33:16.127 回答