C # String.Format () Эквивалент в PHP? - PullRequest
43 голосов
/ 07 августа 2009

Я создаю довольно большое поисковое выражение 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 ]

69 голосов
/ 07 августа 2009

Вы можете использовать функцию sprintf :

$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;
}
7 голосов
/ 07 августа 2009

Попробуйте sprintf http://php.net/sprintf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...