php采集utf-8网页乱码
答案:3 悬赏:70
解决时间 2021-02-02 08:24
- 提问者网友:低唤何为爱
- 2021-02-01 19:27
我用php采集utf-8网页入库成乱码。采集gb2312的正确。程序网页编码utf-8数据库编码utf-8如果采集的网页的编码是gb2312那么就不是乱码,utf-8的就是乱码。<br>==============================<br><?<br> //得到参数<br> $url1=trim($_REQUEST["url1"]);<br> $url2=trim($_REQUEST["url2"]);<br> $url3=trim($_REQUEST["url3"]);<br> $reg=trim($_REQUEST["reg"]);<br><br>$ip=trim($_REQUEST["ip"]);<br> $database=trim($_REQUEST["database"]);<br> $bm=trim($_REQUEST["bm"]);<br> $table=trim($_REQUEST["table"]);<br> $uid=trim($_REQUEST["uid"]);<br> $pwd=trim($_REQUEST["pwd"]);<br><br> $zd_reg=$_REQUEST["zd_reg"];<br> $zd_zhi=$_REQUEST["zd_zhi"];<br><br>if(empty($zd_reg) || empty($zd_zhi))<br> {<br> ?><br> <script language="javascript"><br> alert("获取地方没有正则或数据库没有字段");<br> history.back(-1);<br> </script><br> <?php<br> }<br> else<br> {<br> //数据库连接<br> $conn=mysql_connect($ip,$uid,$pwd);<br> if(!$conn)<br> {<br> echo "数据库连接失败";<br> }<br> else<br> {<br> mysql_select_db($database,$conn);<br> mysql_query("SET NAMES UTF8");<br><br> //读取页面数据<br> $index_content = file_get_contents($url1);<br> preg_match_all($reg,$index_content,$title);<br> $count =count($title[1]);<br> if($count>0)<br> {<br> $d=0; //计数计算得到的数据条数<br> for($i=0;$i<$count;$i++)<br> {<br> //得到内页的网站数据<br> $aurl = $url2.$title[1][$i].$url3;<br> $acount = file_get_contents($aurl); <br><br> //插入到数据库中<br> $sql="insert into `".$table."`(";<br> foreach($zd_reg as $key =>$val_reg)<br> {<br> if($key!=count($zd_reg)-1)<br> {<br> $sql.=" `".$zd_zhi[$key]."`,";<br> }<br> else<br> {<br> $sql.=" `".$zd_zhi[$key]."`";<br> } <br> }<br> $sql.=") values(";<br><br> $null=0; //如果采集的任意字段有控制那么不插入数据库中<br> foreach($zd_reg as $key =>$val_reg)<br> {<br> preg_match($val_reg,$acount,$val_arr);<br> $val=$val_arr[1];<br> if($val=="")<br> {<br> $null=1;<br> }<br> else<br> {<br> iconv("UTF-8","gb2312",$val);<br> }<br><br> $val=addslashes($val);<br><br> if($key!=count($zd_reg)-1)<br> {<br> $sql.=" '$val',";<br> }<br> else<br> {<br> $sql.=" '$val'";<br> }<br> }<br> $sql.=")";<br> if($null!=1)<br> {<br> if(mysql_query($sql,$conn))<br> {<br> $d++;<br> }<br> }<br> }<br><br> ?><br> <script language="javascript"><br> alert("共采集到<?=$d?>条数据");<br> //history.back();<br> </script><br> <?php<br><br> }<br> else<br> {<br> ?><br> <script language="javascript"><br> alert("没有采集到超级连接");<br> history.back();<br> </script><br> <?php<br> }<br> }<br> }<br> ?><br><br>我数据库是utf-8的。<br>听说在获得网页数据时要进行编码转换,不知道怎么转换,什么时候需要转换。<br><br>$acount = mb_convert_encoding($acount,"utf-8","gb2312");<br>我是这样的。<br><br>==采集时网页要过时,怎么设置不过时。php
最佳答案
- 二级知识专家网友:陪我到地狱流浪
- 2021-02-01 20:14
脚本运行的最前面加上一句 set_time_limit(0); 设置不超时
iconv 或者mb_convert_encoding转码。获取过内容的时候就将得到的字符串转为你想要的编码。
iconv 或者mb_convert_encoding转码。获取过内容的时候就将得到的字符串转为你想要的编码。
全部回答
- 1楼网友:情战辞言
- 2021-02-01 21:52
<head> <meta http-equiv="content-Type" content="text/html; charset=utf-8"> </head>
- 2楼网友:苦柚恕我颓废
- 2021-02-01 20:32
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |