¿Cómo reemplazaría todos los números en una cadena con un carácter predefinido?
Reemplace cada número individual con un guión "-".
$str = "John is 28 years old and donated $40.39!";
Salida deseada:
"John is -- years old and donated $--.--!"
Supongo que se usará preg_replace()
pero no estoy seguro de cómo apuntar solo a números.
Solución simple usando strtr
(para traducir todos los dígitos) y str_repeat
:
$str = "John is 28 years old and donated $40.39!"; $result = strtr($str, '0123456789', str_repeat('-', 10)); print_r($result);
La salida:
John is -- years old and donated $--.--!
Como enfoque alternativo, también puede usar la función array_fill (para crear "replace_pairs" ):
$str = "John is 28 years old and donated $40.39!"; $result = strtr($str, '0123456789', array_fill(0, 10, '-'));
<?php $str = "John is 28 years old and donated $40.39!"; echo preg_replace("/\d/", "-", $str);
O:
<?php $str = "John is 28 years old and donated $40.39!"; echo preg_replace("/[0-9]/", "-", $str);
Resultado: John is -- years old and donated $--.--!
También puede hacer esto con un reemplazo normal:
$input = "John is 28 years old and donated $40.39!"; $numbers = str_split('1234567890'); $output = str_replace($numbers,'-',$input); echo $output;
Por si acaso te preguntabas. El código fue probado y funciona. La salida es:
¡John tiene -- años y donó $--.--!
No hay necesidad de expresiones regulares 'oscuras'. ¿Recuerdas dónde van las barras y las llaves y por qué?