Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

431
Views
.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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!