2011-07-13 33 views
5

que tienen una gran cantidad de cadenas, y necesito eliminar '0' al inicio de la cadena, pero ¿cuál es la mejor manera de hacerlo, porque este es un ejemplo de cuerdas:cómo quitar los caracteres en una cadena?

0130799.jpg //I need to get 130799 
0025460.jpg //I need to get 25460 

Ahora, Estoy usando la función substr, pero creo que es más eficiente si uso Regex no?

+0

En cuanto a la eficiencia de una expresión regular sobre otro método de ver: http://stackoverflow.com/questions/3303355/substring-match-faster-with-regular-expression –

Respuesta

11

solo tipo elenco lo hará de manera eficiente

echo (int) $var; 
+0

1 de buena solución. Está fuera de caja. –

+0

¡De hecho, fue fácil! Muchas gracias ! – bahamut100

3

Si el formato es el mismo para todas las cadenas ([número] .jpg), que podría hacer:

intval('0130799.jpg', 10); 

intval() in Manual

+0

¡Está bien para mí! Gracias ! – bahamut100

0

Si usa substr tiene que usarlo junto con strpos porque substr necesita conocer los índices de cadena.

Sí, está mejor con una expresión regular.

Si su pregunta es cómo extraer los dígitos de un 00000ddddddd.jpg cadena (por cierto número de ceros y dígitos distintos de cero) en cualquier lugar en una cadena, entonces debe usar preg_match.

Aquí es un ejemplo completo que se puede probar en http://writecodeonline.com/php/

preg_match('/([1-9][0-9]+)\.jpg/', "I have a file called 0000482080.jpg somewhere", $matches); 
echo "I like to call it: {$matches[0]}"; 

Si toda la cadena es un nombre de archivo, a continuación, utilizar intval o fundición como se sugiere en las otras respuestas.

+0

¿Está bien para la cadena "000AA00"? "AA00" en el resultado? – bahamut100

+0

¡Uy! Buena atrapada. Edité mi respuesta para que no recoja ceros a la izquierda. Lo siento mucho. –

0

Con una expresión regular que sólo puede hacer

preg_replace('/^0+/m','',$sourcestring); 

^ es el inicio de la cadena (aquí con el modificador m el inicio de una fila)

0+ significa 1 o más ceros.

Esta expresión regular coincidirá con todos los ceros a la izquierda y reemplazará con una cadena vacía.

Verla here on Regexr

+0

Como dice Ray Toal, respuesta: ¿esta forma está bien para la cadena "000AA00"? "AA00" en el resultado? – bahamut100

+0

@ bahamut100 Agregué un enlace a una herramienta de prueba de expresiones regulares donde puede verlo. Sí, también eliminará el 0 inicial de "000AA00", ¿es esto lo que quieres? – stema

Cuestiones relacionadas