C# String.Format() 在 PHP 中是否等效?

2022-08-30 11:30:37

我正在构建一个相当大的 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");

有没有 PHP5 等效项?


答案 1

您可以使用冲刺函数

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

或者你编写自己的函数来用相应的参数替换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;
}

答案 2

尝试冲刺 http://php.net/sprintf


推荐