Foros del Web » Programando para Internet » PHP »

Expresiones regulares, básico

Estas en el tema de Expresiones regulares, básico en el foro de PHP en Foros del Web. Hola a todos, espero que estén bien. Lo que necesito es simple, reemplazar el número que está dentro del div por un 0 , pero ...
  #1 (permalink)  
Antiguo 20/09/2012, 12:39
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Expresiones regulares, básico

Hola a todos, espero que estén bien.
Lo que necesito es simple, reemplazar el número que está dentro del div por un 0 , pero no logro hacerlo, tengo este código que lo hace, pero si encuentra otro div con la misma estructura también le pone un 0.

Código PHP:

//Funciona
$cadena =  '<div class="sidebar_globo1" id="alert_notifications">50 </div>';
$cadena =  preg_replace('/[alert_notifications\"\>][0-9]+ \<*/''>0 <',$cadena);
echo 
$cadena;


//Pero el código anterior también funciona en este div que tiene un id=""  distinto y yo quiero que no o haga
$cadena =  '<div class="sidebar_globo1" id="alert_friends_request">80 </div>';
$cadena =  preg_replace('/[alert_notifications\"\>][0-9]+ \<*/''>0 <',$cadena);
echo 
$cadena
En definitiva necesito encontrar un trozo de código del lado derecho, un numero en el medio y otro trozo de código del lado derecho.

Hola 4 chau


encontrar el numero que se encuentra entra las palabras Hola y chau.

Seguramente es lo básico, pero no logro hacerlo.

Gracias de antemano
__________________
la la la
  #2 (permalink)  
Antiguo 20/09/2012, 12:48
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 8 meses
Puntos: 194
Respuesta: Expresiones regulares, básico

Es necesario resolverlo con php?

Una salida rapida puede ser usando jquery,

Código Javascript:
Ver original
  1. <script type=text/javascript>
  2. var side_bar = $('#alert_notifications');
  3. var texto = side_bar.text();
  4. side_bar.text('hola '+texto+' chau');
  5. </javascript>
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #3 (permalink)  
Antiguo 20/09/2012, 12:51
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Expresiones regulares, básico

Al parecer la expresión no está mal, lo que sucede es que te reemplaza mas de una coincidencia, ¿verdad?

Entonces el problema es otro, consulta el manual, ya que ahí te indica como especificar un limite al hacer el reemplazo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 20/09/2012, 12:54
 
Fecha de Ingreso: junio-2011
Ubicación: Veracruz
Mensajes: 16
Antigüedad: 12 años, 10 meses
Puntos: 5
Respuesta: Expresiones regulares, básico

La solucion que te da h2swider, es la mas factible y la mejor...

aun que se podria mejorar:

Código Javascript:
Ver original
  1. <script type=text/javascript>
  2. var sTexto = $('#alert_notifications').text();
  3.  
  4. if (sTexto.equals('0')) {
  5.     $('#alert_notifications').text('Nuevo Texto');
  6. }
  7. </javascript>

Saludos
  #5 (permalink)  
Antiguo 20/09/2012, 12:56
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Expresiones regulares, básico

La solución de JS no es mala, ¿pero que sucede si desactivo JS en mi navegador o bien, quiero cachear el contenido de la pagina desde el server ya procesada?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 20/09/2012, 13:48
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Expresiones regulares, básico

Con js no me sirve, tiene que ser con php, ya que estoy extrayendo un html guardado en la db, y debo modificarlo para luego volver a guardarlo.

pateketrueke: creo que stá mal hecha la expresion regular y no se trata de limit, ya que pongo este ejemplo:

Código PHP:
$cadena =  '
<div  id="uno">1 </div>
<div  id="dos">2 </div>
<div  id="tres">3 </div>

'
;

$cadena =  preg_replace('/[dos\"\>][0-9]+ \<*/''>0 <',$cadena); 
Me reemplaza todos por 0





.
__________________
la la la
  #7 (permalink)  
Antiguo 20/09/2012, 14:03
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Expresiones regulares, básico

Bueno encontré la solucion, estaba mal hecha la expresión

Código PHP:
Ver original
  1. $cadena =  '
  2. <div  id="uno">1 </div>
  3. <div  id="dos">2 </div>
  4. <div  id="tres">3 </div>
  5.  
  6. ';
  7.  
  8. $cadena =  preg_replace('/uno"[>][0-9]+ \<*/', '>0 <',$cadena);
__________________
la la la
  #8 (permalink)  
Antiguo 20/09/2012, 14:49
 
Fecha de Ingreso: junio-2011
Ubicación: Veracruz
Mensajes: 16
Antigüedad: 12 años, 10 meses
Puntos: 5
De acuerdo Respuesta: Expresiones regulares, básico

Cita:
Iniciado por truman_truman Ver Mensaje
Hola a todos, espero que estén bien.

En definitiva necesito encontrar un trozo de código del lado derecho, un numero en el medio y otro trozo de código del lado derecho.

Hola 4 chau


encontrar el numero que se encuentra entra las palabras Hola y chau.

Seguramente es lo básico, pero no logro hacerlo.

Gracias de antemano


************************************************** *

Prueba esta expresion:

Código PHP:
$cadena =  '<div class="sidebar_globo1" id="alert_notifications">50 </div>';
$cadena =  preg_replace('/(alert_notifications)\"\>([0-9][0-9])([\s|\S])/''>0 <',$cadena); 
Espero te sirva....

Saludos

Etiquetas: expresiones, regulares
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 03:31.