技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营

赞助商

分类目录

赞助商

最新文章

搜索

PHP抓网页内容,网址含中文路径时出错

作者:admin    时间:2021-8-23 10:11:30    浏览:

今天需要实现一个简单的功能,就是用PHP抓网页内容,但是在实际使用时遇到了一个问题,就是无论用何种方法去获取网页内容,当网址含有中文路径时就会出错。

我用了file_get_contents()curl两种方法,当网址不含中文时,没有问题,但当网址含有中文,就不行了。

 PHP抓网页内容,网址含中文路径时出错

如抓下面这个网页没问题

http://www.webkaka.com/tutorial/

但抓下面这个网页就抓不到

http://www.webkaka.com/tutorial/html/tags/按钮/

有人提到用curl来抓,添加header头信息,但是经过测试这个方法是无效的。

在测试过程中,我还尝试过用encode等网址编码函数,但还是没能解决问题。

这个问题看似不大,但解决起来还是煞费心神的。

我又谷歌了一下。

最终找到了问题的解决方法,那就是需要使用下面这个语句,对网址进行转换。

$Url = "http://www.webkaka.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
  • 站长推荐
/* 左侧显示文章内容目录 */