基於preg_match_all採集後資料處理的一點心得筆記(編碼轉換和正則匹配)_PHP教程

來源:互聯網
上載者:User
1、使用curl實現站外採集

具體請參考我上一篇筆記:http://www.jb51.net/article/46432.htm

2、編碼轉換
首先通過查看原始碼找到採集的網站使用的編碼,通過mb_convert_encoding函數進行轉碼;

具體使用方法:

複製代碼 代碼如下:
//源字元是$str

//以下已知原編碼為GBK,轉換為utf-8
mb_convert_encoding($str, "UTF-8", "GBK");

//以下未知原編碼,通過auto自動檢測後,轉換編碼為utf-8
mb_convert_encoding($str, "UTF-8", "auto");

3、為更好地避開分行符號和空格等不定因素的阻礙,有必要先清除採集到的源碼中的分行符號、空格符和定位字元

複製代碼 代碼如下:
//方法一,使用str_replace進行替換
$contents = str_replace("\r\n", '', $contents); //清除分行符號
$contents = str_replace("\n", '', $contents); //清除分行符號
$contents = str_replace("\t", '', $contents); //清除定位字元
$contents = str_replace(" ", '', $contents); //清除空格符

//方法二,使用Regex進行替換
$contents = preg_replace("/([\r\n|\n|\t| ]+)/",'',$contents);

4、通過Regex匹配找出需要獲得的程式碼片段,使用preg_match_all實現該匹配

複製代碼 代碼如下:
函數解釋:
int preg_match_all ( string pattern, string subject, array matches [, int flags] )
pattern即正規運算式
subject即要進行尋找的原文
matches是用於儲存輸出結果的數組
flags是儲存的模式,包括:
PREG_PATTERN_ORDER; //整個數組是二維數組,$arr1[0]是包括邊界所構成匹配字串的數組,$arr1[1]除去邊界所構成的匹配字串的數組
PREG_SET_ORDER; //整個數組是二維數組,$arr2[0][0]是第一個包括邊界所構成的匹配的字串,$arr2[0][1]是第一個除去邊界所構成的匹配的字串,之後的數組以此類推
PREG_OFFSET_CAPTURE; //整個數組是三維數組,$arr3[0][0][0]是第一個包括邊界所構成的匹配的字串,$arr3[0][0][1]是到達第一個匹配字串的邊界的位移量(邊界不算在內),之後以此類推,$arr2[1][0][0]是第一個包括邊界所構成的匹配的字串,$arr3[1][0][1]是到達第一個匹配字串的邊界的位移量(邊界算在內);

//實際應用
preg_match_all('/(.*?)<\/p>/',$contents, $out, PREG_SET_ORDER);
$out將擷取到所有匹配的元素
$out[0][0]將是包括

在內的全段字元
$out[0][1]將是僅包括(.*?)括弧內所匹配到的字元段

//如此類推,第n個匹配到的欄位可以用以下方法取得
$out[n-1][1]

//若Regex中存大多個括弧,則取得句中第m個匹配點的方法是
$out[n-1][m]

5、取得要找到字元後,若要去掉html標籤,使用PHP內建的函數strip_tags即可方便地實現

複製代碼 代碼如下:
//例
$result=strip_tags($out[0][1]);

http://www.bkjia.com/PHPjc/728086.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/728086.htmlTechArticle1、使用curl實現站外採集 具體請參考我上一篇筆記:http://www.jb51.net/article/46432.htm 2、編碼轉換 首先通過查看原始碼找到採集的網站使用的編...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.