2009-07-10 7 views
47

Hey, ich muss alle Bilder aus einer Zeichenfolge löschen und ich kann einfach nicht den richtigen Weg finden, es zu tun.PHP - Entfernen <img> Tag aus String

Hier ist, was ich habe versucht, aber es funktioniert nicht:

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

Irgendwelche Ideen?

+3

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

Antwort

124

Versuchen Sie, die \ vor der > fallen zu lassen.

Edit: Ich habe gerade Ihre Regex getestet und es funktioniert gut. Dies ist, was ich verwenden:

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

Das Ergebnis ist:

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

Können Sie dies außer (Bild) wird es durch die alt eines Bildes ersetzen? – MysteryDev

17

Sie müssen das Ergebnis zurück $content zuweisen, da preg_replace die ursprüngliche Zeichenfolge nicht ändert.

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

Sean funktioniert es gut ich habe diesen Code nur verwendet

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

// das Ergebnis es ist nur der Klartext. Es klappt!!!

1

Ich wollte die ersten 300 Wörter einer Nachrichtengeschichte als Vorschau anzeigen, was leider bedeutete, dass wenn eine Geschichte ein Bild innerhalb der ersten 300 Wörter hatte, wurde es in der Liste der Vorschauen angezeigt, die wirklich mein Layout durcheinander brachten. Ich habe den obigen Code verwendet, um alle Bilder aus der Zeichenfolge aus meiner Datenbank zu verstecken, und es funktioniert wunderbar!

$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

Kommentare verwenden Mini-Markdown-Formatierung: [link] (http://example.com) _italic_ ** fett ** 'code'. Der Postautor wird immer über Ihren Kommentar informiert. Um auch einen früheren Kommentator zu benachrichtigen, geben Sie seinen Benutzernamen an: – xavip

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

ist ein sauberer und einfacher Weg

+3

Der zweite Parameter für strip_tags() ist für zulässige Tags, um nicht anzugeben, welche Tags entfernt werden sollen. Es sollte wirklich eine inverse Version geben, aber das ist nicht (soweit ich weiß). – twistedpixel

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

Wenn Benutzereingaben

 
<img src="#"> 

In der Datenbank-Tabelle einfügen nur Charakter dieses #

Werke für mich

-3

verwenden Sie einfach die form_validation Klasse von codeigniter:

strip_image_tags($str). 

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

Hat er gesagt, er benutzt CodeIgniter? – galdikas