Foros del Web » Programando para Internet » PHP »

preg_replace para agregar texto?

Estas en el tema de preg_replace para agregar texto? en el foro de PHP en Foros del Web. Tengo el siguiente código cuyo objetivo es buscar un <img para agregarle luego un <br /><br /> detrás. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original $newtext ...
  #1 (permalink)  
Antiguo 21/10/2015, 00:16
Avatar de Adsl5mb  
Fecha de Ingreso: junio-2007
Mensajes: 1.589
Antigüedad: 16 años, 10 meses
Puntos: 34
preg_replace para agregar texto?

Tengo el siguiente código cuyo objetivo es buscar un <img para agregarle luego un <br /><br /> detrás.

Código PHP:
Ver original
  1. $newtext= $1 . "<br /><br/>"';
  2. $replacement = "/<img.+?\>/i";
  3.         if($show['guest'])
  4.         {
  5.         $this->post['message'] = preg_replace($replacement, $newtext, $this->post['message'], 1);
  6.         }

La expresión funciona bien, sin embargo no soy capaz de poner el texto y agregar el <br /> después, es decir falla lo que es esta línea:

Código:
$newtext= $1 . "<br /><br/>";
Entrada:
Código:
<img src="http://www.imagen.com/code.jpg" />
Resultado esperado:
Código:
<img src="http://www.imagen.com/code.jpg" /> <br /> <br/>
Como puedo hacerlo?, hay alguna forma mejor de hacerlo sin utilizar preg_replace?

Muchas gracias
__________________
Foro: Yelsoft
Blog: Milutilidades

Última edición por Adsl5mb; 21/10/2015 a las 00:49
  #2 (permalink)  
Antiguo 21/10/2015, 01:14
 
Fecha de Ingreso: mayo-2013
Mensajes: 169
Antigüedad: 10 años, 10 meses
Puntos: 25
Respuesta: preg_replace para agregar texto?

Código PHP:
$newtext'$1 <br /><br/>'
Creo que el $1 debe estar entre comillas, y ojo simples.
  #3 (permalink)  
Antiguo 21/10/2015, 11:52
Avatar de Adsl5mb  
Fecha de Ingreso: junio-2007
Mensajes: 1.589
Antigüedad: 16 años, 10 meses
Puntos: 34
Respuesta: preg_replace para agregar texto?

Cita:
Iniciado por Amiancht Ver Mensaje
Código PHP:
$newtext'$1 <br /><br/>'
Creo que el $1 debe estar entre comillas, y ojo simples.
Gracias por la respuesta. Lamentablemente no logré que funcione aún así.

Alguna otra idea?
__________________
Foro: Yelsoft
Blog: Milutilidades
  #4 (permalink)  
Antiguo 21/10/2015, 12:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: preg_replace para agregar texto?

La expresión $1 está equivocada porque no estás capturando nada con paréntesis, por lo tanto no existe la captura número 1.

Entonces, dado que es todo lo que capture la expresión se usa la captura 0.

Que igual la expresión regular no está del todo bien, yo lo haría así:

Código PHP:
Ver original
  1. $html = '<img src="http://www.imagen.com/code.jpg" />';
  2.  
  3. $text = '$0 <br /><br/>';
  4.  
  5. $regex = '/<img.+?>/i';
  6.  
  7. echo preg_replace($regex, $text, $html); // <img src="http://www.imagen.com/code.jpg" /> <br /><br/>

Detalles más, detalles menos.

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 21/10/2015, 14:24
Avatar de Adsl5mb  
Fecha de Ingreso: junio-2007
Mensajes: 1.589
Antigüedad: 16 años, 10 meses
Puntos: 34
Respuesta: preg_replace para agregar texto?

Gracias, ahí si me funcionó.

Una última pregunta, noté que en la expresión regular cuando la imagen está contenida dentro de un enlace por ejemplo:

Código:
<a href="http://www.forosdelweb.com/"><img src="http://www.imagen.com/code.jpg" /></a>
Me lo convierte a lo siguiente:

Código:
<a href="http://www.forosdelweb.com/"><img src="http://www.imagen.com/code.jpg" /> <br /><br /> </a>
Como podría hacer para evitar que haga match en un caso así?
__________________
Foro: Yelsoft
Blog: Milutilidades

Etiquetas: Ninguno
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 04:48.