做采集的都知道,一般采集過來的內容難免會帶有html標簽,如果有太多的標簽會影響之后的數據分析或提取,所以需要過濾掉!PHP已經為我們提供了很多清除html格式的方法了,下面就讓老高介紹一下。
strip_tags($str) 去掉 HTML 及 PHP 的標記
語法: string strip_tags(string str);
傳回值: 字串
函式種類: 資料處理
內容說明 :
解析:本函式可去掉字串中包含的任何 HTML 及 PHP 的標記字串。若是字串的 HTML 及 PHP 標簽原來就有錯,例如少了大于的符號,則也會傳回錯誤。這個函數和 fgetss() 有著相同的功能
例子
echo strip_tags("Hello world!");# Hello world!
這個函數把html中的標簽轉換為html實體,博客的代碼展示就必須使用這個函數,要不貼出來的代碼就會被執行了。
預定義的字符是:
& (和號) 成為 &
” (雙引號) 成為 ”
‘ (單引號) 成為 ‘
< (小于) 成為 < > (大于) 成為 >
例子
$new = htmlspecialchars("Test", ENT_QUOTES);echo $new; # <a href='test'>Test</a># 如果需要展現
,那么瀏覽器解析HTML的時候會自動將他變為換行# 但是通過htmlspecialchars就可以讓< 變為 '
與htmlspecialchars功能相反的函數是htmlspecialchars_decode,他會把HTML實體轉化為字符!
PHP去除html、css樣式、js格式的方法很多,但發現,它們基本都有一個弊端:空格往往清除不了
經過不斷的研究,終找到了一個理想的去除html包括空格css樣式、js 的PHP函數。
$descclear = str_replace("\r","",$descclear);//過濾換行$descclear = str_replace("\n","",$descclear);//過濾換行$descclear = str_replace("\t","",$descclear);//過濾換行$descclear = str_replace("\r\n","",$descclear);//過濾換行$descclear = preg_replace("/\s+/", " ", $descclear);//過濾多余回車$descclear = preg_replace("/<[ ]+/si","<",$descclear); //過濾<__("<"號后面帶空格)$descclear = preg_replace("/<\!--.*?-->/si","",$descclear); //過濾html注釋$descclear = preg_replace("/<(\!.*?)>/si","",$descclear); //過濾DOCTYPE$descclear = preg_replace("/<(\/?html.*?)>/si","",$descclear); //過濾html標簽$descclear = preg_replace("/<(\/?head.*?)>/si","",$descclear); //過濾head標簽$descclear = preg_replace("/<(\/?meta.*?)>/si","",$descclear); //過濾meta標簽$descclear = preg_replace("/<(\/?body.*?)>/si","",$descclear); //過濾body標簽$descclear = preg_replace("/<(\/?link.*?)>/si","",$descclear); //過濾link標簽$descclear = preg_replace("/<(\/?form.*?)>/si","",$descclear); //過濾form標簽$descclear = preg_replace("/cookie/si","COOKIE",$descclear); //過濾COOKIE標簽$descclear = preg_replace("/<(applet.*?)>(.*?)<(\/applet.*?)>/si","",$descclear); //過濾applet標簽$descclear = preg_replace("/<(\/?applet.*?)>/si","",$descclear); //過濾applet標簽$descclear = preg_replace("/<(style.*?)>(.*?)<(\/style.*?)>/si","",$descclear); //過濾style標簽$descclear = preg_replace("/<(\/?style.*?)>/si","",$descclear); //過濾style標簽$descclear = preg_replace("/<(title.*?)>(.*?)<(\/title.*?)>/si","",$descclear); //過濾title標簽$descclear = preg_replace("/<(\/?title.*?)>/si","",$descclear); //過濾title標簽$descclear = preg_replace("/<(object.*?)>(.*?)<(\/object.*?)>/si","",$descclear); //過濾object標簽$descclear = preg_replace("/<(\/?objec.*?)>/si","",$descclear); //過濾object標簽$descclear = preg_replace("/<(noframes.*?)>(.*?)<(\/noframes.*?)>/si","",$descclear); //過濾noframes標簽$descclear = preg_replace("/<(\/?noframes.*?)>/si","",$descclear); //過濾noframes標簽$descclear = preg_replace("/<(i?frame.*?)>(.*?)<(\/i?frame.*?)>/si","",$descclear); //過濾frame標簽$descclear = preg_replace("/<(\/?i?frame.*?)>/si","",$descclear); //過濾frame標簽$descclear = preg_replace("/<(script.*?)>(.*?)<(\/script.*?)>/si","",$descclear); //過濾script標簽$descclear = preg_replace("/<(\/?script.*?)>/si","",$descclear); //過濾script標簽$descclear = preg_replace("/javascript/si","Javascript",$descclear); //過濾script標簽$descclear = preg_replace("/vbscript/si","Vbscript",$descclear); //過濾script標簽$descclear = preg_replace("/on([a-z]+)\s*=/si","On\\1=",$descclear); //過濾script標簽$descclear = preg_replace("/&#/si","&#",$descclear); //過濾script標簽,如javAsCript:alert();//使用正則替換$pat = "/<(\/?)(script|i?frame|style|html|body|li|i|map|title|img|link|span|u|font|table|tr|b|marquee|td|strong|div|a|meta|\?|\%)([^>]*?)>/isU";$descclear = preg_replace($pat,"",$descclear);
采集這個東西說簡單很簡單,但說難真的很難。一旦遇到錯誤,就會讓人很抓狂!
想要成為采集高手,你不僅需要了解從一個計算機發出的基于TCP的HTTP請求到終得到請求的文件的整個過程,而且能夠使用一系列的工具來協助你跟蹤數據的去處,同時需要考慮你寫出的采集任務的效率!
如果你需要采集或者Facebook的數據,可以參考使用shadowsocks輕松搭建FQ環境
本文由 老高 創作,采用 知識共享署名 3.0 中國大陸許可協議 進行許可。
可自由轉載、引用,但需署名作者且注明文章出處。
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。