2009-07-10 16 views
47

Ehi, ho bisogno di eliminare tutte le immagini da una stringa e non riesco a trovare il modo giusto per farlo.PHP - rimuovi <img> tag dalla stringa

Ecco quello che ho provato, ma non funziona:

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

Tutte le idee?

+3

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

risposta

124

Provare a rilasciare lo \ davanti allo >.

Modifica: ho appena testato la regex e funziona correttamente. Questo è quello che ho usato:

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

Il risultato è:

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

Riesci a fare questo a eccezione di (immagine) si sostituirà con l'alt di un'immagine? – MysteryDev

12

Io suggerirei di usare il metodo strip_tags.

17

È necessario assegnare il risultato a $content come preg_replace non modifica la stringa originale.

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

Sean funziona bene ho appena usato questo codice

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

// il risultato è solo il testo normale. Funziona!!!

1

Volevo visualizzare le prime 300 parole di un notiziario come un'anteprima che purtroppo significava che se una storia aveva un'immagine entro le prime 300 parole, allora veniva visualizzata nell'elenco delle anteprime che veramente incasinato con il mio layout. Ho usato il codice sopra per nascondere tutte le immagini dalla stringa presa dal mio database e funziona meravigliosamente!

$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

I commenti utilizzano la formattazione mini-Markdown: [link] (http://example.com) _italic_ ** bold ** 'code'. L'autore del post sarà sempre informato del tuo commento. Per notificare anche un commentatore precedente, menzionare il loro nome utente: – xavip

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

è un modo più pulito e più semplice

+3

Il secondo parametro per strip_tags() è per i tag consentiti, non per specificare quali tag rimuovere. Ci dovrebbe essere una versione inversa, ma non c'è (per quanto ne so). – twistedpixel

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

Se gli input dell'utente

 
<img src="#"> 

nella tabella del database è sufficiente inserire il carattere questo #

funziona per me

-3

semplicemente utilizzare la classe form_validation di CodeIgniter:

strip_image_tags($str). 

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

Ha detto, sta usando CodeIgniter? – galdikas