PHP strip_tags():从某个域中除去图像以外的所有内容?

PHP strip_tags():从某个域中除去图像以外的所有内容?,php,html,strip-tags,Php,Html,Strip Tags,我想知道,除了某个域的标签外,是否可以从用户提交的表单中删除所有标签 我有一个表单,它主要是一个关于我的字段,用户可以在其中共享一些关于他/她自己的信息。我目前正在使用以下方法剥离和保护MySQL插入的数据: $data = trim(htmlentities(strip_tags((string)$_POST['f_ab_me']))); $data = mysqli_real_escape_string($db, $data); 现在我知道strip_标签允许通过使用以下方式允许特定标签:

我想知道,除了某个域的标签外,是否可以从用户提交的表单中删除所有标签

我有一个表单,它主要是一个关于我的字段,用户可以在其中共享一些关于他/她自己的信息。我目前正在使用以下方法剥离和保护MySQL插入的数据:

$data = trim(htmlentities(strip_tags((string)$_POST['f_ab_me'])));
$data = mysqli_real_escape_string($db, $data);
现在我知道strip_标签允许通过使用以下方式允许特定标签:

strip_tags($data, 'img');
但是我能告诉它不要从…中删除具有属性源的IMG标记吗。。。。。比如说

我不想让用户在我的服务器上上传图片,因为我不想使用那么多带宽,但我想让他们仍然可以选择添加imgur.com上的图片,这会自动删除EXIF信息。我也不需要做的是,有一大堆的输入框,用户可以在每个输入框中输入一个链接,在我看来,这看起来不是很好

这就是为什么我要问,是否有可能以某种方式通过编程控制它,也许是使用正则表达式

非常感谢您的时间。

事实上,使用strip\u tags函数不是一种正确的方法,因为如果您的用户想要编写任何类似HTML的内容,您只需将其删除即可。不是很友好吧

使用htmlentities足以避免在用户输入的内容中注入HTML

对于您的问题,您可以执行以下操作:

使用Regexp将所有i.imgur.com/*图像替换为类似于[IMG=*] 然后将htmlentities应用于用户内容。 在呈现内容时,只需再次使用Regexp将[IMG=*]代码转换回IMG标记。 我不太熟悉Regexp,但我写了一个工作模式:

echo preg_replace("#<img (.*?)src=(\"|\')http(s)?://i.imgur.com(.*?)(\"|\')#U", "[IMG=http://i.imgur.com$4]", $content);

你不能用条纹标签。。。。您可以告诉它要剥离或离开哪些标签,但不能基于这些标签的属性快速回复@MarkBaker,但您可以告诉我如何做到这一点吗?谢谢使用Strip_标记除去除img标记以外的所有标记,然后您需要一个regex或使用dom除去所有不需要的图像hanks a lot@danilicious!我明白,这是一个很好的开始,我现在就去试试。嘿,快问一下,为什么这个正则表达式在regexr上有效,但当我使用:preg_replace//,$POST['f_ab_me']时就不行了;谢谢@用户3751393,正如我在regexr上看到的,你的exp也不起作用,删除?!在i.imgur.com使其在Regexr和PHP上运行之前,嘿,嗯,我该如何选择相反的选项呢?我想选择src中不包含I.imgur.com的所有img标记。我以为?!做了与下一步相反的事。谢谢@user3751393抱歉,起初没有意识到您要选择反面。preg_match_all/,$content,$matches;-这个对我来说很好用