我想知道是否可以从用户提交的表单中删除所有标记,除了来自某个域的标记。
我的表格主要是"关于我"用户可以分享关于他/她自己的一些信息的字段。我目前正在剥离并使用以下方法保护MySQL插入数据:
$data = trim(htmlentities(strip_tags((string)$_POST['f_ab_me'])));
$data = mysqli_real_escape_string($db, $data);
现在我知道strip_tags允许通过使用允许特定标签:
strip_tags($data, 'img');
但我可以告诉它不要删除具有属性" source"的IMG标签。来自" http://i.imgur.com/ ....."例如?
我不想让用户在我的服务器上上传图片,因为我不想使用那么多的带宽,但我想让他们选择仍然添加来自imgur.com的图片(哪些条带)自动EXIF信息)。我也不知道该做什么是有大量的输入框,用户可以在每个输入框中输入一个链接,在我看来这看起来不太好。
这就是为什么我问是否有可能以某种方式以编程方式控制它,可能是正则表达式?
非常感谢你的时间。
答案 0 :(得分:0)
实际上,使用strip_tags
函数不是正确的方法,因为如果您的用户想要编写任何看起来像HTML的东西,您只需将其剪掉。不太友好,对吧? :)
使用htmlentities
就足以避免在用户输入的内容中进行HTML注入。
根据你的问题,你可以做下一步:
i.imgur.com/*
图片替换为[IMG=*]
htmlentities
应用于用户内容。[IMG=*]
代码恢复为img
代码。我对Regexp不是很熟悉,但我写的是工作模式:
echo preg_replace("#<img (.*?)src=(\"|\')http(s)?://i.imgur.com(.*?)(\"|\')#U", "[IMG=http://i.imgur.com$4]", $content);