44 votes

C # String.Format () Equivalent en PHP?

Je crée une expression de recherche Lucene.NET assez grande. Existe-t-il un moyen de meilleures pratiques pour effectuer le remplacement de chaîne en PHP? Il ne doit pas nécessairement en être ainsi, mais j'espère quelque chose de similaire à la méthode C # String.Format.

Voici à quoi ressemblerait la logique en C #.

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

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

Existe-t-il un équivalent PHP5?

70voto

Gumbo Points 279147

Vous pouvez utiliser la fonction sprintf :

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

Ou vous écrivez votre propre fonction pour remplacer le { i } par l'argument correspondant:

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

7voto

Essayez sprintf http://php.net/sprintf

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X