Foros del Web » Programando para Internet » PHP »

Expresion regular

Estas en el tema de Expresion regular en el foro de PHP en Foros del Web. Buenas compañeros, estoy intentando hacer que un string como este: 1511111196_0 quede asi : "1511111196" sin el "_0" El 0 puede ser cualquier número, pero ...
  #1 (permalink)  
Antiguo 09/02/2012, 06:27
 
Fecha de Ingreso: junio-2008
Mensajes: 165
Antigüedad: 15 años, 10 meses
Puntos: 6
Expresion regular

Buenas compañeros, estoy intentando hacer que un string como este:

1511111196_0
quede asi :
"1511111196" sin el "_0"

El 0 puede ser cualquier número, pero no tengo ni idea de expresiones regulares :(

se que se podria y que además seria sencilla pero por muy sencilla que sea a mi la verdad me supera.

Estoy haciendo esto:

Código PHP:
Ver original
  1. $arr_pieza = preg_replace("[:punct:][0-9]", "", $arr_pieza);

claro, php me da un error y además creo que solo se que [0-9] es cualquier número comprendido en ese rango y que [:punct:] es cualquier signo de puntuación (aunque en este caso solo seria _0 o cualquier número, pero por probar no perdia nada, pero efectivamente no funciona, ojala podais ayudarme.
  #2 (permalink)  
Antiguo 09/02/2012, 07:03
Usuario no validado
 
Fecha de Ingreso: enero-2010
Ubicación: Maturín, Monagas
Mensajes: 190
Antigüedad: 14 años, 3 meses
Puntos: 24
Respuesta: Expresion regular

si el primer numero va a ser siempre algo asi que ya tu obtengas se me ocurre hacer esto tomando tus datos.
Código PHP:
Ver original
  1. <?php
  2.  
  3. $nombre=1511111196;
  4. //alimentamos el generador de aleatorios
  5. srand (time());
  6. //generamos un número aleatorio
  7. $numero_aleatorio = rand(1,100);
  8. //concatenamos
  9. $nombre_nuevo=$nombre."_".$numero_aleatorio;
  10. echo $nombre_nuevo;
  11.  
  12. ?>

Bueno es una idea si entendi lo que deseas hacer.. saludos.
  #3 (permalink)  
Antiguo 09/02/2012, 07:14
 
Fecha de Ingreso: junio-2008
Mensajes: 165
Antigüedad: 15 años, 10 meses
Puntos: 6
Respuesta: Expresion regular

No jeje creo que me entendiste mal, lo que quiero es:

limpiar 151665_0 por 151665 es decir, eliminar el _0 (en este caso es _0 pero podria ser _10 ...etc) de todas formas gracias por tu ayudaa! :P
  #4 (permalink)  
Antiguo 09/02/2012, 07:28
Usuario no validado
 
Fecha de Ingreso: enero-2010
Ubicación: Maturín, Monagas
Mensajes: 190
Antigüedad: 14 años, 3 meses
Puntos: 24
Respuesta: Expresion regular

Entiendo prueba asi y te recomiendo http://php.net/manual/es/function.substr.php donde se explica mejor

Código PHP:
Ver original
  1. <?php
  2.  
  3. $nombre=1511111196;
  4. //alimentamos el generador de aleatorios
  5. srand (time());
  6. //generamos un número aleatorio
  7. $numero_aleatorio = rand(1,100);
  8. //concatenamos
  9. $nombre_nuevo=$nombre."_".$numero_aleatorio;
  10. echo "tipo de variable: ".$nombre_nuevo;
  11.  
  12. echo "<br>Si quiero eliminar solo el _ : ".$variable = str_replace(array("\n","_"),array(" "," "),$nombre_mas_nuevo);//elimina el _
  13.  
  14. echo "<br> Sabiendo si el numero siempre tendra la misma cantidad: ".substr($nombre_nuevo,0,-3); // el tercer argumento elimina lo que quieres
  15. ?>

bueno el ejemplo esta como el anterior pensemos ya viene como dices aunque este lo crea y luego se lo quita dejandolo como lo quieres espero ahora si te sirva saludos..
  #5 (permalink)  
Antiguo 09/02/2012, 09:03
 
Fecha de Ingreso: junio-2008
Mensajes: 165
Antigüedad: 15 años, 10 meses
Puntos: 6
Respuesta: Expresion regular

Buenas compañero, te agradezco mucho el ejemplo, pero realmente creo que con lo que utilizo seria mas sencillo y menos código, lo unico que necesito es una exprescion regular que elimine _ y lo que pueda venir a continuacion que siempre sera un numero (no se los digitos exactos) ya que es dinamico basado en un montón de variables.

Tan solo necesitaria como dije una expresion como la del primer post pero que funcione ya que la mia da error, una expresion para detectar _y cualquier digito que pueda venir.
  #6 (permalink)  
Antiguo 09/02/2012, 09:07
 
Fecha de Ingreso: octubre-2011
Ubicación: Chile
Mensajes: 52
Antigüedad: 12 años, 6 meses
Puntos: 17
Respuesta: Expresion regular

en caso de que SIEMPRE sea _0 lo que quieras eliminar, puedes usar strstr($var,0,-2) siendo $var tu string...
Esto cortará en todos los casos los ultimos 2 caracteres del string, sin importar cuales sean.

Saludos.
__________________
No respondo mensajes privados, pregunte por foro como todos los mortales.
  #7 (permalink)  
Antiguo 09/02/2012, 09:09
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Expresion regular

Te va a salir más facil de alguna de estas formas:

OPCION 1:
$numero_completo="1511111196_0";
$numero_corto=substr($numero_completo,0,strrpos($n umero_completo,"_"));
Esta es una buena opción si quieres obtener el numero completo sin importar que haya después del _

OPCION 2:
$numero_completo="1511111196_0";
$numeros=explode("_",$numero_completo);
$numero_corto=$numeros[0];
Esta es una buena opción si quieres tambien tener el numero ubicado despues del _ que estaría en $numeros[1] y que sería "0".
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #8 (permalink)  
Antiguo 09/02/2012, 09:10
 
Fecha de Ingreso: octubre-2011
Ubicación: Chile
Mensajes: 52
Antigüedad: 12 años, 6 meses
Puntos: 17
Respuesta: Expresion regular

Cita:
Iniciado por EduardoU24 Ver Mensaje
en caso de que SIEMPRE sea _0 lo que quieras eliminar, puedes usar substr($var,0,-2) siendo $var tu string...
Esto cortará en todos los casos los ultimos 2 caracteres del string, sin importar cuales sean.

Saludos.
Era substr haha :)

Recuerda, solo en caso de que sean 2 caracteres los que sobran... si es 15,100, 100000 etc, no.
__________________
No respondo mensajes privados, pregunte por foro como todos los mortales.
  #9 (permalink)  
Antiguo 09/02/2012, 09:14
 
Fecha de Ingreso: junio-2008
Mensajes: 165
Antigüedad: 15 años, 10 meses
Puntos: 6
Respuesta: Expresion regular

wow gracias! no habia pensado en esas formas! Siempre estais sacandome de apuros :P
  #10 (permalink)  
Antiguo 09/02/2012, 09:31
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Expresion regular

Bueno con exp regulares sería más o menos:

Código PHP:
Ver original
  1. <?php
  2. $str = '1511111196_0';
  3. preg_match('/^(\d+)_\d+$/', $str, $m);
  4. echo $m[1];

Pero para una cosa tan sencilla yo apoyo las soluciones de stramin, pero no está de más aprender, te dejo este aporte:

http://www.forosdelweb.com/f18/aport...s-pcre-646110/

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #11 (permalink)  
Antiguo 09/02/2012, 09:56
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 2 meses
Puntos: 53
Respuesta: Expresion regular

yo utilizo:
Código PHP:
Ver original
  1. $variable ="12345_0";
  2.  
  3. $variable = substr ($variable, 0, -2);//elimina los 2 ultimos caracteres //imprime 12345
  4. y
  5. $variable = str_replace('_0', '', $variable );//elimina todos los "_0" //imprime 12345
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #12 (permalink)  
Antiguo 09/02/2012, 10:08
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Expresion regular

Cita:
Iniciado por PIRRUMAN Ver Mensaje
yo utilizo:
Código PHP:
Ver original
  1. $variable ="12345_0";
  2.  
  3. $variable = substr ($variable, 0, -2);//elimina los 2 ultimos caracteres //imprime 12345
  4. y
  5. $variable = str_replace('_0', '', $variable );//elimina todos los "_0" //imprime 12345
Y si es 12345_10 ?
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #13 (permalink)  
Antiguo 09/02/2012, 10:21
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 2 meses
Puntos: 53
Respuesta: Expresion regular

Cita:
Iniciado por andresdzphp Ver Mensaje
Y si es 12345_10 ?
$variable ="12345_0";
//o
$variable ="12345_10";

$variable = substr ($variable, 0, -2);//elimina los 2 ultimos caracteres //imprime 12345
$variable = substr ($variable, 0, -3);//elimina los 3 ultimos caracteres //imprime 12345
//y
$variable = str_replace('_0', '', $variable );//elimina todos los "_0" //imprime 12345
$variable = str_replace('_10', '', $variable );//elimina todos los "_10" //imprime 12345

era a manera de ejemplo quizas ahora no sea su caso pero, podria utilizar estos metodos en otros

en este caso "en particular" utilizaria la opcion de stramin
Cita:
Iniciado por stramin Ver Mensaje
Te va a salir más facil de alguna de estas formas:

OPCION 2:
$numero_completo="1511111196_0";
$numeros=explode("_",$numero_completo);
$numero_corto=$numeros[0];
Esta es una buena opción si quieres tambien tener el numero ubicado despues del _ que estaría en $numeros[1] y que sería "0".
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”

Etiquetas: expresion, regular
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:04.