2009-07-10 15 views
47

ねえ、文字列からすべての画像を削除する必要があり、正しい方法を見つけることができません。ここでPHP - 文字列からタグを取り除く

は私がしようと試みたものですが、それは動作しません:

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

任意のアイデア?

+3

$コンテンツ=にpreg_replace(...、$コンテンツ)。 –

答えて

124

の前に\を削除してみてください。

編集:私はあなたの正規表現をテストしたところ、正常に動作します。これは私が使用したものである:

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

結果は次のとおりです。私はstrip_tags方法を使用することをお勧めし

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

これは画像のaltと置き換えられる(画像)以外は作ることができますか? – MysteryDev

12

17

preg_replaceは元の文字列を変更しないため、結果を$contentに戻す必要があります。

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

ショーンそれはプレーンテキストのみだ結果//私はちょうど

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

このコードを使用しました正常に動作します。できます!!!

1

ニュースの最初の300語をプレビューとして表示したかったのですが、残念ながら、最初の300語以内に画像がある場合はプレビューのリストに表示され、実際にレイアウトに混乱しました。私は上記のコードを使用して私のデータベースから取った文字列からすべての画像を隠し、それはすばらしく動作します!

$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

コメントは、ミニマークアップの書式設定を使用してください:[リンク](http://example.com)_italic_ **太字** 'コード'。投稿者は常にあなたのコメントを通知されます。以前のコメント作成者にも通知するには、ユーザー名を記述してください: – xavip

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

ユーザ入力データベーステーブルで

 
<img src="#"> 

はちょうど私のための文字この#

作品を挿入した場合はクリーンでシンプルな方法

+3

strip_tags()の2番目のパラメーターは、許可タグのためのもので、削除するタグを指定するものではありません。実際には逆のバージョンがあるはずですが(私が知っている限りでは)存在しません。 – twistedpixel

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

ある

-3

単にCodeIgniterののform_validationクラスを使用します。

strip_image_tags($str). 

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

彼はCodeIgniterを使用していると言いましたか? – galdikas

関連する問題