使用CURL添加奇数间距

时间:2017-02-08 19:56:10

标签: php regex curl encoding

我不知道为什么会这样。 当我抓取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"

1 个答案:

答案 0 :(得分:-1)

你的preg_replace只搜索一个空格试试

preg_replace("/\s+/",'',$XMLResponse);