PHP – 从string中删除<img>标签

嘿,我需要删除一个string中的所有图像,我只是找不到正确的方法来做到这一点。

这是我尝试的,但它不工作:

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

有任何想法吗?

尝试删除\的前面。

编辑:我只是testing你的正则expression式,它工作正常。 这是我用过的:

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

结果是:

这是一个(图像)的东西。

您需要将结果指定回$content因为preg_replace不会修改原始string。

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

我会build议使用strip_tags方法。

肖恩它工作正常,我刚刚使用这个代码

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

//结果只是纯文本。 有用!!!

我想把一个新闻故事的前300个单词作为预览显示,不幸的是,如果一个故事在前300个单词中有一个图像,那么它显示在与我的布局真正混淆的预览列表中。 我用上面的代码来隐藏从我的数据库中获取的string的所有图像,它奇妙地工作!

 $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; } 
 $this->load->helper('security'); $h=mysql_real_escape_string(strip_image_tags($comment)); 

如果用户input

 <img src =“#”>

在数据库表中插入字符这个#

为我工作

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

是一个更清洁和简单的方法

只需使用codeigniter的form_validation类:

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