代码之家  ›  专栏  ›  技术社区  ›  Ben Griswold

C string.format()在PHP中是否等效?

  •  43
  • Ben Griswold  · 技术社区  · 15 年前

    我正在构建一个相当大的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等效物?

    2 回复  |  直到 12 年前
        1
  •  69
  •   Gumbo    15 年前

    你可以用 sprintf function :

    $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
  •  7
  •   Mateusz Kubiczek    15 年前