如何使用php从标签中删除所有/任何属性,比如一个段落标签?
至
虽然有更好的方法,但您实际上可以使用正则表达式从html标记中剥离参数:
[^<]*)/i'; // match any start tag $chunks = preg_split($regEx, $htmlString, -1, PREG_SPLIT_DELIM_CAPTURE); $chunkCount = count($chunks); $strippedString = ''; for ($n = 1; $n < $chunkCount; $n++) { $strippedString .= $chunks[$n]; } return $strippedString; } ?>
以上内容可能用较少的字符编写,但它完成了工作(快速和脏).
使用SimpleXML剥离属性(PHP5中的标准)
'; // define allowable attributes $allowable_atts = array('href','src','alt'); // strip collector $strip_arr = array(); // load XHTML with SimpleXML $data_sxml = simplexml_load_string(' '. $data_str .' ', 'SimpleXMLElement', LIBXML_NOERROR | LIBXML_NOXMLDECL); if ($data_sxml ) { // loop all elements with an attribute foreach ($data_sxml->xpath('descendant::*[@*]') as $tag) { // loop attributes foreach ($tag->attributes() as $name=>$value) { // check for allowable attributes if (!in_array($name, $allowable_atts)) { // set attribute value to empty string $tag->attributes()->$name = ''; // collect attribute patterns to be stripped $strip_arr[$name] = '/ '. $name .'=""/'; } } } } // strip unallowed attributes and root tag $data_str = strip_tags(preg_replace($strip_arr,array(''),$data_sxml->asXML()), $allowable_tags); ?>
3> 小智..:这里有一个函数可以删除除了你想要的所有属性:
function stripAttributes($s, $allowedattr = array()) { if (preg_match_all("/<[^>]*\\s([^>]*)\\/*>/msiU", $s, $res, PREG_SET_ORDER)) { foreach ($res as $r) { $tag = $r[0]; $attrs = array(); preg_match_all("/\\s.*=(['\"]).*\\1/msiU", " " . $r[1], $split, PREG_SET_ORDER); foreach ($split as $spl) { $attrs[] = $spl[0]; } $newattrs = array(); foreach ($attrs as $a) { $tmp = explode("=", $a); if (trim($a) != "" && (!isset($tmp[1]) || (trim($tmp[0]) != "" && !in_array(strtolower(trim($tmp[0])), $allowedattr)))) { } else { $newattrs[] = $a; } } $attrs = implode(" ", $newattrs); $rpl = str_replace($r[1], $attrs, $tag); $s = str_replace($tag, $rpl, $s); } } return $s; }在示例中它将是:
echo stripAttributes('');
或者如果你是 想要保持"类"属性:
echo stripAttributes('', array('class'));
要么
假设您要将消息发送到收件箱并使用CKEDITOR编写消息,则可以按如下方式分配函数,并在发送之前将其回显给$ message变量.请注意,名为stripAttributes()的函数将删除所有不必要的html标记.我试了一下它工作正常.我只看到像粗体等添加的格式
$message = stripAttributes($_POST['message']);或者你可以
echo $message;
预览.
4> pd...:HTML Purifier是使用PHP清理HTML的更好工具之一.
5> neingeist..:老实说,我认为唯一明智的做法是在HTML Purifier库中使用标签和属性白名单.这里的示例脚本:
set('HTML.Allowed', 'p,b,a[href],i,br,img[src]'); $config->set('URI.Base', 'http://www.example.com'); $config->set('URI.MakeAbsolute', true); $purifier = new HTMLPurifier($config); $dirty_html = " broken a href linky c Anzahl besuchter Seiten missing end tag ende "; $clean_html = $purifier->purify($dirty_html); print "dirty
"; print "" . htmlentities($dirty_html) . ""; print "clean
"; print "" . htmlentities($clean_html) . ""; ?>这产生了以下干净,符合标准的HTML片段:
broken a href linkfnord y c Anzahl besuchter Seiten missing end tag ende在您的情况下,白名单将是:
$config->set('HTML.Allowed', 'p');推荐阅读
如何解决《在gitbash中设置一个环境变量》经验,为你挑选了2个好方法。 ... [详细] 如何解决《正则表达式不包括666和900-999》经验,为你挑选了1个好方法。 ... [详细] 如何解决《ODataWebApi2错误处理》经验,为你挑选了0个好方法。 ... [详细] 如何解决《plot.roc用于pROC包中的multiclass.roc?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《在TestFlight(iTunesConnect)中为外部测试人员提交应用程序时出错》经验,为你挑选了1个好方法。 ... [详细] 如何解决《有没有人让GooglePlay的"跟踪渠道(UTM)"广告系列跟踪工作?》经验,为你挑选了0个好方法。 ... [详细] 如何解决《使用Java中的BouncyCastle创建具有主题备选方案的PKCS10请求》经验,为你挑选了0个好方法。 ... [详细] 如何解决《SQLAlchemy:创建query.from_statement(text())的子查询,引发AttributeError》经验,为你挑选了0个好方法。 ... [详细] 如何解决《从弹性搜索中删除或删除旧数据》经验,为你挑选了2个好方法。 ... [详细] 如何解决《如何在chrome扩展开发中获取选定的文本?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《使用OptionalJava8避免在List处理中进行"空检查"》经验,为你挑选了1个好方法。 ... [详细] 如何解决《为什么我的Arduino类构造函数需要参数?》经验,为你挑选了2个好方法。 ... [详细] 如何解决《二进制搜索树的析构函数》经验,为你挑选了1个好方法。 ... [详细] 如何解决《ServiceFabricReliableCollections:序列化问题》经验,为你挑选了1个好方法。 ... [详细] 如何解决《R中的多项式回归-对曲线有额外的约束》经验,为你挑选了1个好方法。 ... [详细] 如何解决《如何在EclipseOpenResource结果列表中排除某些项目/路径?》经验,为你挑选了2个好方法。 ... [详细] 如何解决《运行基于SpringBoot的docker镜像返回错误消息:jarfile/app.jar无效或损坏》经验,为你挑选了1个好方法。 ... [详细] 如何解决《如何重新索引pandas数据帧以将起始索引值重置为零?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《springbootoauth2与jdbc令牌存储给出oauth_access_token关系不存在》经验,为你挑选了1个好方法。 ... [详细] 如何解决《CUDA__constant__尊重全球记忆.哪个缓存?》经验,为你挑选了1个好方法。 ... [详细]吐了个 "CAO" !Tags | 热门标签RankList | 热门文章
- 1Spring Boot SSL TCPClient~StompBrokerRelayMessageHandler~ActiveMQ~Undertow
- 2我找到了一个javascript块,但不明白它的作用
- 3将std :: tr1 :: shared_ptr与std :: function/std :: bind混合会导致编译器错误与更新的gcc
- 4Lodash过滤器嵌套对象
- 5为什么我们需要容器?
- 6从pandas在seaborn clustermap中设置col_colors
- 7Woocommerce - added_to_cart触发器
- 8Nodejs:wget,解压缩并转换为js而无需写入文件
- 9动态查找矩形的边缘
- 10如何从UISegmentController中删除边框?
- 11Android拍摄截图
- 12使用JS的数组问题
- 13为不同的客户选择不同的最大ID
- 14Windows中NPM和Node-gyp的问题
- 15不同分类器的TPR和FPR曲线 - kNN,NaiveBayes,R中的决策树
- 16为什么errorString是一个结构,而不是一个字符串
- 17如何在没有br的情况下在html中进行换行
- 18在C#中从Firebase中驱动JSON对象
- 19无法执行 - Git P4克隆坏了
- 20在其他控件上方显示带有半透明BackColor的标签?
DevBox开发工具箱 | 专业的在线开发工具网站 京公网安备 11010802040832号 | 京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有