多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > PHP 函數 strip_tags 的一個嚴重 bug

PHP 函數 strip_tags 的一個嚴重 bug

來源:程序員人生   發布時間:2013-12-05 04:12:27 閱讀次數:3398次

PHP 函數 strip_tags 提供了從字符串中去除 HTML 和 PHP 標記的功能,該函數嘗試返回給定的字符串 str 去除空字符、HTML 和 PHP 標記后的結果。

由于 strip_tags() 無法實際驗證 HTML,不完整或者破損標簽將導致更多的數據被刪除。

比如下述代碼:

<div>string</div>string<string<b>hello</b><div>string</div>

通過 strip_tags($str, ‘<div>’) 過濾,我們可能期望得到如下結果:

<div>string</div>string<stringhello<div>string</div>

而實際操作結果是這樣的:

<div>string</div>string

這一切都是因為加紅的那個左尖括號,查了 PHP 的文檔,有一個警告提示:

由于 strip_tags() 無法實際驗證 HTML,不完整或者破損標簽將導致更多的數據被刪除。

既然在執行過濾前無法驗證代碼正確性,遇到和標簽相關的字符 “<” 或 “>” 后面的代碼就全掛了!

2013.01.11 更新:
以下方法可以解決該問題,但可能在 HTML 數據過大時,存在一定的效率問題,慎用!

function fixtags ($text) {$text = htmlspecialchars($text);$text = preg_replace("/&quot;/", "&quot;"", $text);$tags = "/&lt;(!|)(/|)(w*)( |)(w*)([=]*)(?|(")"&quot;"|)(?|(.*)?&quot;(")|)([ ]?)(/|)&gt;/i";$replacement = "<$1$2$3$4$5$6$7$8$9$10$11>";$text = preg_replace($tags, $replacement, $text);$text = preg_replace("/=""/", "=", $text);$text = preg_replace("/&quot;"/", """, $text);return $text;}

使用方法:

strip_tags(fixtags($string), '<div>');
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 福利视频一二区 | 国产欧美自拍 | 性福利视频| 欧美深夜福利 | 国产精品jizz观看 | 最近的中文字幕在线国语 | 日本中文字幕视频在线看 | 国产精品久久成人影院 | 成人777777| 亚洲色大成网站www久久九九 | 最近中文字幕版免费 | 国产精品一区二区久久精品涩爱 | 一级a毛片免费观看久久精品 | 亚洲欧美网站 | 欧美黑人巨大xxxxx视频 | 亚洲成人精品 | 日本一二三区在线视频 | 欧美性猛交xxxx黑人猛交 | 欧美video| 美国一级毛片免费 | 天天天做天天天天爱天天想 | 天堂在线观看视频 | 国产主播福利 | 国产v精品欧美精品v日韩 | 免费视频一区 | 亚洲精品亚洲九十七页 | 高清国产一区二区三区 | 性生生活三级视频在线观看 | 国产视频二区在线观看 | 爱爱的免费视频 | 第一福利在线观看永久视频 | 最近最新中文字幕国语片 | 在线美女免费观看网站h | 免费福利网站在线观看 | 精品国产福利片在线观看 | 国产精品免费综合一区视频 | 色淫影院| 亚州一级毛片 | 黄色一区二区三区 | 久久一级视频 | 日本高清专区一区二无线 |