Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

437
Vistas
.format () similar a Python en php

Tengo la siguiente matriz:

 $matches[0] = "123"; $matches[1] = "987"; $matches[2] = "121";

Y la siguiente cadena:

 $result = "My phone number is {0} and police number is {2}";

Me gustaría reemplazar el marcador de posición {} basado en la matriz $matches , en caso de que no haya ninguna coincidencia para el marcador de posición, no se muestra nada en su lugar.

¿Cuál es la mejor manera de lograrlo, o conoce una mejor solución a mi problema?

(En este momento estoy construyendo el sistema, así que en lugar de corchetes podría usar cualquier otro símbolo)

ACTUALIZAR

En python esto es posible usando la función .format() .

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Puede hacerlo con vsprintf , no tiene que cambiar el orden de los artículos si da el número (de 1) de su artículo así: %n$s (donde n es el número):

 $matches = [ "123", "987", "121"]; $result = 'My phone number is %1$s and police number is %3$s'; $res = vsprintf($result, $matches);

Tenga en cuenta que debe colocar la cadena formateada entre comillas simples; de lo contrario, $s se interpretará como una variable y se reemplazará con nada.

( vprintf y vsprintf están diseñados para matrices, pero puede hacer lo mismo con printf y sprintf para variables separadas, funciona igual)


Si no puede cambiar su cadena original con formato de Python, la forma es usar preg_replace_callback :

 $matches = [ "123", "987", "121"]; $result = 'My phone number is {0} and police number is {2}'; $res = preg_replace_callback('~{(\d+)}~', function ($m) use ($matches) { return isset($matches[$m[1]]) ? $matches[$m[1]] : $m[0]; }, $result);

o puede crear una matriz asociativa donde las claves son marcadores de posición y valores de los valores de su matriz, y usar strtr para el reemplazo:

 $matches = [ "123", "987", "121"]; $result = 'My phone number is {0} and police number is {2}'; $trans = array_combine( array_map(function ($i) { return '{'.$i.'}'; }, array_keys($matches)), $matches ); $result = strtr($result, $trans);
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda