技術頻道導航
HTML/CSS
.NET技術
IIS技術
PHP技術
Js/JQuery
Photoshop
Fireworks
服務器技術
操作系統(tǒng)
網站運營

贊助商

分類目錄

贊助商

最新文章

搜索

PHP抓網頁內容,網址含中文路徑時出錯

作者:admin    時間:2021-8-23 10:11:30    瀏覽:

今天需要實現一個簡單的功能,就是用PHP抓網頁內容,但是在實際使用時遇到了一個問題,就是無論用何種方法去獲取網頁內容,當網址含有中文路徑時就會出錯。

我用了file_get_contents()curl兩種方法,當網址不含中文時,沒有問題,但當網址含有中文,就不行了。

 PHP抓網頁內容,網址含中文路徑時出錯

如抓下面這個網頁沒問題

http://www.howtostagehomes.com/tutorial/

但抓下面這個網頁就抓不到

http://www.howtostagehomes.com/tutorial/html/tags/按鈕/

有人提到用curl來抓,添加header頭信息,但是經過測試這個方法是無效的。

在測試過程中,我還嘗試過用encode等網址編碼函數,但還是沒能解決問題。

這個問題看似不大,但解決起來還是煞費心神的。

我又谷歌了一下。

最終找到了問題的解決方法,那就是需要使用下面這個語句,對網址進行轉換。

$Url = "http://www.howtostagehomes.com/tutorial/html/tags/按鈕/";
$Url = iconv('utf-8', 'gbk', $Url); //把utf-8轉為gbk

然后用轉換后的網址去抓,這樣,無論用何種方法,都能成功抓到想要的網頁了。

iconv編碼格式轉換

1. iconv()介紹

iconv函數可以將一種已知的字符集文件轉換成另一種已知的字符集文件。例如:從GB2312轉換為UTF-8。

iconv函數在php5中內置,GB字符集默認打開。

2. iconv()錯誤

iconv在轉換字符”—”到gb2312時會出錯,解決方法是在需要轉成的編碼后加 “//IGNORE”,也就是iconv函數第二個參數后。

添加了字符串 //IGNORE,不能以目標字符集表達的字符將被默默丟棄。 否則,會導致一個 E_NOTICE并返回 false。

代碼如下:

iconv("gb2312", "utf-8//IGNORE", $data) 【把gb2312轉換成utf-8】

您可能對以下文章也感興趣

標簽: file_get_contents  curl  
x