28 votos

C# Cadena.Format() Equivalente en PHP?

Estoy construyendo una gran Lucene.NET expresión de búsqueda. Es allí una de las mejores prácticas de manera de hacer la sustitución de cadena en PHP? No tiene que ser de esta manera, pero yo estoy esperando algo similar a la de C# de la Cadena.Formato de método.

He aquí lo que la lógica se vería en C#.

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

filter = String.Format(filter, "Cheese");

Hay un PHP5 equivalente?

50voto

Gumbo Puntos 279147

Usted podría utilizar la sprintf función de:

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

O de escribir su propia función para reemplazar el {i} por el argumento correspondiente:

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;
}

6voto

Intente sprintf http://php.net/sprintf

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X