¿Son estas tres cadenas separadas, o una cadena con líneas nuevas que separan cada número? Al editar su pregunta, noté que tenía <br>etiquetas que separaban los números; ¿son realmente parte de tu cadena?
Advertencia $ str: = '0'. Abordado en mi respuesta, basado en esta respuesta.
Mike Weir
¿Por qué complicar demasiado las cosas? y Mike es $ str + = 0; como se explica aquí: nabtron.com/kiss-code
Nabeel Khan
@NabeelKhan Eso no respondería la pregunta, que no pide convertir la cadena a un entero. Vea los comentarios sobre la respuesta de Svisstack de por qué esta no es una solución tan buena.
solitario el
@lonesomeday deberías leer su pregunta cuidadosamente donde menciona: "ten en cuenta que el número anterior se generó al azar". así que ya son enteros :)
Acabo de probar un (int) "00009384783473"(número aleatorio) y mi resultado fue 2147483647. Sin embargo, si lo lanzo como flotante, parece funcionar bien. Extraño
JamesHalsall
El manual dice que "el tamaño de un número entero depende de la plataforma, aunque un valor máximo de aproximadamente dos mil millones es el valor habitual (son 32 bits con signo)"
llamerr
1
No es extraño. Los enteros en php van hasta 2 ^ 31, que es 2147483647. Para cualquier número mayor, deberá usar la solución basada en cadenas de lonesomeday.
awm
1
Puede parecer que el lanzamiento a flotación funciona, pero en algún momento obtendrá errores de redondeo.
awm
1
¿qué tal la idea de evaluar cada una de las cadenas usando una declaración de bucle, que cuando llega a un dígito (o cadena) distinto de cero, obtendrá el índice de ese dígito y eliminará todos los ceros anteriores y luego hará eco de la cadena que comienza con el primer valor distinto de cero ..
Gerald
10
¡No sé por qué la gente usa métodos tan complejos para lograr algo tan simple! Y regex? ¡Guauu!
Esto parece una solución más simple, pero no maneja ningún tamaño de cadena como lo hacen otras respuestas. Estás convirtiendo de una cadena a un número entero y luego de vuelta como una cadena, más simple simplemente acortar la cadena.
Mike Weir
1
Interesante, pero no sé si es la mejor solución con las conversiones de tipo.
jonathanbell
1
Por favor, no hagas esto ... esta es la razón por la cual PHP tiene una mala reputación
Dan F.
9
Similar a otra sugerencia, excepto que no borrará el cero real:
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.
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.
<br>
etiquetas que separaban los números; ¿son realmente parte de tu cadena?Respuestas:
ltrim
:fuente
fuente
(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/ ):
fuente
Similar a otra sugerencia, excepto que no borrará el cero real:
O como se sugirió (a partir de PHP 5.3), se puede usar el operador ternario abreviado:
fuente
$str = ltrim($str, '0') ?: '0';
- sin llamada de recorte redundante.puedes agregar "+" en tu variable,
ejemplo:
fuente
Regex ya se propuso, pero no correctamente:
la salida es entonces:
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.fuente
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.
fuente
Estoy arreglado de esta manera.
es muy simple. solo pasa una cadena para eliminar el inicio cero de la cadena.
fuente
Ajay Kumar ofrece el echo más simple + $ numString; Yo uso estos:
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.
fuente
Suponiendo que desea eliminar una secuencia de tres o más ceros y su ejemplo es una cadena:
Puede hacer que el patrón regex se ajuste a lo que necesita si mis suposiciones están apagadas.
Esta ayuda?
fuente