C#String.Format()在PHP中是否相同?

Ben*_*old 43 php c#

我正在构建一个相当大的Lucene.NET搜索表达式.是否有最佳实践方法在PHP中进行字符串替换?它不一定是这种方式,但我希望有类似于C#String.Format方法的东西.

这是C#中逻辑的样子.

var filter = "content:{0} title:{0}^4.0 path.title:{0}^4.0 description:{0} ...";

filter = String.Format(filter, "Cheese");
Run Code Online (Sandbox Code Playgroud)

是否有PHP5等价物?

Gum*_*mbo 69

你可以使用这个sprintf功能:

$filter = "content:%1$s title:%1$s^4.0 path.title:%1$s^4.0 description:%1$s ...";
$filter = sprintf($filter, "Cheese");
Run Code Online (Sandbox Code Playgroud)

或者你编写自己的函数来替换相应的参数:{i}

function format() {
    $args = func_get_args();
    if (count($args) == 0) {
        return;
    }
    if (count($args) == 1) {
        return $args[0];
    }
    $str = array_shift($args);
    $str = preg_replace_callback('/\\{(0|[1-9]\\d*)\\}/', create_function('$match', '$args = '.var_export($args, true).'; return isset($args[$match[1]]) ? $args[$match[1]] : $match[0];'), $str);
    return $str;
}
Run Code Online (Sandbox Code Playgroud)

  • create_function在7.2中已弃用 (2认同)