使用Curl進行抓取遠端內容時url中文編碼問題

2021-09-07 09:25:25 字數 2193 閱讀 6807

php中對於url進行編碼,可以使用 urlencode() 或者 rawurlencode(),二者的區別是前者把空格編碼為 '+',而後者把空格編碼為 '%20',不過應該注意的是,在編碼時應該只對部分url編碼,否則url中的冒號和反斜槓也會被轉義。下面是詳細解釋:

1

string urlencode( string str)

返回字串,此字串中除了 -_. 之外的所有非字母數字字元都將被替換成百分號(%)後跟兩位十六進製制數,空格則編碼為加號(+)。

例子 1 :urlencode函式與rawurlencode函式區別

1

2

3

4

$str='博 客';

echourlencode($str);

echo"

";

echorawurlencode($str);

url結果:

1

2

%b2%a9+%bf%cd

%b2%a9%20%bf%cd

例子 2 :url中文編碼方法

從url:"博 客" 轉為 url:"%e5%8d%9a%20%e5%ae%a2";

1

2

3

4

$url='博 客';

$arr=explode('=',$url);

$url=$arr[0].'='.rawurlencode($arr[1]);

echo$url;

結果:%e5%8d%9a%20%e5%ae%a2

或許用以下url編碼函式

1

2

3

4

5

6

7

8

9

10

11

12

functioncn_urlencode($url)-\x]+/u";//utf-8中文正則

if(preg_match_all($pregstr,$url,$matcharray))

if(strpos($url,' '))

}

return$url;

}

url結果:

%e5%8d%9a%20%e5%ae%a2

CURL抓取頁面時替換頁面內容

其實把抓取下來的頁面用str replace進行替換就可以了 curl.php如下 curl使用 path 1初始化 ch curl init curl setopt ch,curlopt url,path curl setopt ch,curlopt returntransfer,true out...

使用PHP的cURL庫進行網頁抓取

使用php的curl庫可以簡單和有效地去抓網頁。你只需要執行乙個指令碼,然後分析一下你所抓取的網頁,然後就可以以程式的方式得到你想要的資料了。無論是你想從從乙個鏈結上取部分資料,或是取乙個xml檔案並把其匯入資料庫,那怕就是簡單的獲取網頁內容,curl 是乙個功能強大的php庫。本文主要講述如果使用...

結合PHP和CURL抓取遠端網頁資料

要採集 資料,實現也不難,本例就將介紹如何通過php的curl庫來抓取遠端網頁資料。以下超簡單的 演示了如何通過php的curl庫 來遠端抓取乙個網頁的資料資訊 curlopt returntransfer,是個預定義常數,用於告訴curl返回抓取回來的資料資訊而非直接在瀏覽器中顯示這些資料資訊。你...