mantener - quitar ceros a la izquierda php
Cómo eliminar todos los ceros a la izquierda en una cuerda (10)
Si tengo una cadena
00020300504
00000234892839
000239074
¿Cómo puedo deshacerme de los ceros a la izquierda para que solo tenga esto?
20300504
234892839
239074
tenga en cuenta que el número anterior se generó al azar.
¡No sé por qué las personas están usando métodos tan complejos para lograr algo tan simple! Y regex? ¡Guauu!
Aquí tienes, la forma más fácil y simple (como se explica aquí: nabtron.com/kiss-code ):
$a = ''000000000000001'';
$a += 0;
echo $a; // will output 1
Ajay Kumar ofrece el echo + $ numString más simple ; Yo uso estos:
echo round($val = "0005");
echo $val = 0005;
//both output 5
echo round($val = 00000648370000075845);
echo round($val = "00000648370000075845");
//output 648370000075845, no need to care about the other zeroes in the number
//like with regex or comparative functions. Works w/wo single/double quotes
En realidad, cualquier función matemática tomará el número de la "cadena" y lo tratará como tal. Es mucho más simple que cualquier expresión regular o funciones comparativas. Vi que en php.net, no recuerdo dónde.
Estoy arreglado de esta manera.
es muy sencillo. solo pase una cuerda; elimine el inicio cero de la cadena.
function removeZeroString($str='''')
{
while(trim(substr($str,0,1)) === ''0'')
{
$str = ltrim($str,''0'');
}
return $str;
}
No creo que preg_replace sea la respuesta ... viejo hilo, pero sucede que hoy lo busco. ltrim y (int) casting es el ganador.
<?php
$numString = "0000001123000";
$actualInt = "1123000";
$fixed_str1 = preg_replace(''/000+/'','''',$numString);
$fixed_str2 = ltrim($numString, ''0'');
$fixed_str3 = (int)$numString;
echo $numString . " Original";
echo "<br>";
echo $fixed_str1 . " Fix1";
echo "<br>";
echo $fixed_str2 . " Fix2";
echo "<br>";
echo $fixed_str3 . " Fix3";
echo "<br>";
echo $actualInt . " Actual integer in string";
//output
0000001123000 Origina
1123 Fix1
1123000 Fix2
1123000 Fix3
1123000 Actual integer in tring
Regex ya fue propuesto, pero no correctamente:
<?php
$number = ''00000004523423400023402340240'';
$withoutLeadingZeroes = preg_replace(''/^0+/'', $number)
echo $withoutLeadingZeroes;
?>
La salida es entonces:
4523423400023402340240
Fondo en Regex: el ^
señala el principio de la cadena y el signo +
señala más o ninguno del signo anterior. Por lo tanto, la expresión regular ^0+
coincide con todos los ceros al comienzo de una cadena.
Similar a otra sugerencia, excepto que no borrará el cero real:
if (ltrim($str, ''0'') != '''') {
$str = ltrim($str, ''0'');
} else {
$str = ''0'';
}
Suponiendo que desea que se eliminen tres o más ceros y su ejemplo sea una cadena:
$test_str ="0002030050400000234892839000239074";
$fixed_str = preg_replace(''/000+/'','''',$test_str);
Puede hacer que el patrón de expresión regular se ajuste a lo que necesita si mis suposiciones están desactivadas.
Esta ayuda?
puedes agregar "+" en tu variable,
ejemplo:
$numString = "0000001123000";
echo +$numString;
ltrim
:
$str = ltrim($str, ''0'');
(string)((int)"00000234892839")