2009-07-10 22 views
47

Oye, necesito eliminar todas las imágenes de una cadena y no puedo encontrar la manera correcta de hacerlo.PHP - eliminar <img> etiqueta de la cadena

Esto es lo que tryed, pero no funciona:

preg_replace("/<img[^>]+\>/i", "(image) ", $content); 
echo $content; 

¿Alguna idea?

+3

$ content = preg_replace (..., $ contenido); –

Respuesta

124

Pruebe soltar el \ delante del >.

Editar: Acabo de probar su expresión regular y funciona bien. Esto es lo que he utilizado:

<? 
    $content = "this is something with an <img src=\"test.png\"/> in it."; 
    $content = preg_replace("/<img[^>]+\>/i", "(image) ", $content); 
    echo $content; 
?> 

El resultado es:

 
this is something with an (image) in it. 
+3

¿Se puede hacer esto a excepción de (imagen) que reemplazará con la altura de una imagen? – MysteryDev

17

Debe asignar el resultado de nuevo a $content como preg_replace no modifica la cadena original.

$content = preg_replace("/<img[^>]+\>/i", "(image) ", $content); 
7

Sean funciona bien yo sólo he utilizado el código

$content = preg_replace("/<img[^>]+\>/i", " ", $content); 
echo $content; 

// el resultado es sólo el texto sin formato. ¡¡¡Funciona!!!

1

Quería mostrar las primeras 300 palabras de una historia de noticias como una vista previa que lamentablemente significaba que si una historia tenía una imagen dentro de las primeras 300 palabras, entonces se mostraba en la lista de vistas previas que realmente alteraba mi diseño. Utilicé el código anterior para ocultar todas las imágenes de la cadena tomada de mi base de datos y funciona maravillosamente.

$news = $row_latest_news ['content']; 
$news = preg_replace("/<img[^>]+\>/i", "", $news); 
if (strlen($news) > 300){ 
echo substr($news, 0, strpos($news,' ',300)).'...'; 
} 
else { 
echo $news; 
} 
+0

Los comentarios usan el formato mini-Markdown: [link] (http://example.com) _italic_ ** bold ** 'code'. El autor del post siempre será notificado de tu comentario. Para notificar también a un comentarista anterior, mencione su nombre de usuario: – xavip

-4
$content = strip_tags($content, '<img>'); 

es una forma más limpia y más simple

+3

El segundo parámetro para strip_tags() es para etiquetas permitidas, no para especificar qué etiquetas eliminar. Realmente debería haber una versión inversa, pero no hay (por lo que yo sé). – twistedpixel

-1
$this->load->helper('security'); 
$h=mysql_real_escape_string(strip_image_tags($comment)); 

Si las entradas del usuario

 
<img src="#"> 

En la tabla de la base de datos simplemente insertar el carácter de este #

funciona para mí

-3

simplemente utilizar la clase form_validation de CodeIgniter:

strip_image_tags($str). 

$this->load->library('form_validation'); 
$this->form_validation->set_rules('nombre_campo', 'label', 'strip_image_tags'); 
+3

¿Dijo él, él está usando CodeIgniter? – galdikas