我不知道为什么会这样。 当我抓取HTML页面时,CURL返回一个预期的字符串。
但是当我抓取XML页面时。它返回如下内容。
< / l o c >
< p r i o r i t y >
0 . 7 5
< / p r i o r i t y >
< / u r l >
< u r l >
< l o c >
XML文件的间隔不是这样的,实际上唯一的“空间”就是每一行缩写的标签。
HTML看起来像这样。
</span>
</div>
</div>
</footer> </div>
</div>
</body>
我的代码看起来像这样。
class Crawler{
static $UserAgent = 'Nic Crawler';
static function Get($url)
{
$curl = curl_init();
// Set some options - we are passing in a useragent too here
curl_setopt_array($curl, array(
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $url,
CURLOPT_USERAGENT => self::$UserAgent
));
// Send the request & save response to $resp
$resp = curl_exec($curl);
// Close request to clear up some resources
curl_close($curl);
//$resp = utf8_decode($resp);
return $resp;
}
}
奇怪的是,如果我试图去除任何空格字符preg_replace("/\s/",'',$XMLResponse);
,我会得到相同的输出。
我错过了什么?
在评论询问这些字符是否是其他实体后,我制作了这个litle代码。
for($i = 0; $i<= strlen($XmlResponse); $i++){
echo '"'.$XmlResponse{$i}.'"'.' -> '.'"'.ord($XmlResponse{$i}).'"'."\n";
}
$XmlResponse
是以Crawler::Get()
方法的任何方式响应的未更改/未更改
这就是我的目标。
" " -> "0"
"0" -> "48"
" " -> "0"
"." -> "46"
" " -> "0"
"7" -> "55"
" " -> "0"
"5" -> "53"
" " -> "0"
" -> "13"
" " -> "0"
"
" -> "10"
" " -> "0"
" " -> "9"
" " -> "0"
答案 0 :(得分:-1)
你的preg_replace只搜索一个空格试试
preg_replace("/\s+/",'',$XMLResponse);