Respuestas:
$str = ltrim($str, '0');
(string)((int)"00000234892839")
(int) "00009384783473"
(número aleatorio) y mi resultado fue 2147483647. Sin embargo, si lo lanzo como flotante, parece funcionar bien. Extraño
¡No sé por qué la gente usa métodos tan complejos para lograr algo tan simple! Y regex? ¡Guauu!
Aquí tienes, la forma más fácil y sencilla (como se explica aquí: https://nabtron.com/kiss-code/ ):
$a = '000000000000001';
$a += 0;
echo $a; // will output 1
Similar a otra sugerencia, excepto que no borrará el cero real:
if (ltrim($str, '0') != '') {
$str = ltrim($str, '0');
} else {
$str = '0';
}
O como se sugirió (a partir de PHP 5.3), se puede usar el operador ternario abreviado:
$str = ltrim($str, '0') ?: '0';
$str = ltrim($str, '0') ?: '0';
- sin llamada de recorte redundante.
puedes agregar "+" en tu variable,
ejemplo:
$numString = "0000001123000";
echo +$numString;
Regex ya se propuso, pero no correctamente:
<?php
$number = '00000004523423400023402340240';
$withoutLeadingZeroes = preg_replace('/^0+/', '', $number)
echo $withoutLeadingZeroes;
?>
la salida es entonces:
4523423400023402340240
Antecedentes de Regex: las ^
señales comienzan con una cadena y el +
signo señala más o nada del signo anterior. Por lo tanto, la expresión regular ^0+
coincide con todos los ceros al comienzo de una cadena.
preg_replace() expects at least 3 parameters, 2 given
No creo que preg_replace sea la respuesta ... hilo viejo pero resulta que busco esto hoy. Itrim 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
Estoy arreglado de esta manera.
es muy simple. solo pasa una cadena para eliminar el inicio cero de la cadena.
function removeZeroString($str='')
{
while(trim(substr($str,0,1)) === '0')
{
$str = ltrim($str,'0');
}
return $str;
}
Ajay Kumar ofrece el echo más simple + $ numString; 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á así. Es mucho más simple que cualquier expresión regular o funciones comparativas. Vi eso en php.net, no recuerdo dónde.
Suponiendo que desea eliminar una secuencia de tres o más ceros y su ejemplo es una cadena:
$test_str ="0002030050400000234892839000239074";
$fixed_str = preg_replace('/000+/','',$test_str);
Puede hacer que el patrón regex se ajuste a lo que necesita si mis suposiciones están apagadas.
Esta ayuda?
<br>
etiquetas que separaban los números; ¿son realmente parte de tu cadena?