在提交到数据库之前清理php标记

时间:2013-07-13 15:54:29

标签: php html preg-replace

在我的网站上,我有一个部分,用户可以在其中撰写自己的个人信息或放置信息。在本节中,他们可以发布图片。

虽然我有点问题;如果用户复制并粘贴来自Google等网站的图片,则图片所保留的样式将与之保持一致。像这样:

<img id="irc_mi"  -webkit-linear-gradient(45deg, #efefef 25%, transparent 25%, transparent 75%, #efefef 75%, #efefef), -webkit-linear-gradient(45deg, #efefef 25%, transparent 25%, transparent 75%, #efefef 75%, #efefef); -webkit-background-size: 21px; background-size: 21px; box-shadow: rgba(0, 0, 0, 0.648438) 0px 5px 35px; -webkit-box-shadow: rgba(0, 0, 0, 0.648438) 0px 5px 35px; margin-top: 80px; background-position: 0px 0px, 10px 10px;" src="http://www.fireandice.com/images/P/4060104_a-Small-Cat-Copper-Drip-Wall-Decoration.jpg" alt="" width="400" height="400" />

在我将图片标记提交到数据库之前,有没有办法从此图片标记中剥离样式?

我正在尝试使用PHP preg_replace,但在将src保留到图像方面遇到了一些问题,因为这是我唯一不想替换的内容。

$src = '<img src="" width="150" height="226" alt="user image"/>';
preg_replace('/<img[^>]+\>/i', $src, $string);  

有没有办法保留原始src

1 个答案:

答案 0 :(得分:0)

为什么允许输入HTML代码?

通常有两种方法可以完成这项工作:允许输入网址或允许上传图片。

第一个可能是一件坏事,因为通常你想自己托管图像,而不是从其他任何地方抓住它们。此外,其他服务器管理员可能会添加反链接,这些图像将不再显示。

上传有它自己的一类问题,因为没有任何限制,用户将上传巨大的恶意文件 - 你必须以某种方式处理它。

如果您真的想要清理任意HTML,请使用http://htmlpurifier.org/ - 并且不要发明自己的方案。