php / curl没有返回正确的数据

时间:2010-12-31 07:12:33

标签: php curl

以下是一些测试代码的小样本,只是转到

http://www.un.org/apps/news/story.asp?NewsID=37180&Cr=Haiti&Cr1=

并拉入指定的网页。

<?php
    $url = "http://www.un.org/apps/news/story.asp?NewsID=37180&Cr=Haiti&Cr1=";
    $curl = curl_init();    // initialize curl handle
    curl_setopt($curl, CURLOPT_URL, $url); // set url to post to
    curl_setopt($curl, CURLOPT_FAILONERROR, 1);
    curl_setopt($curl, CURLOPT_COOKIESESSION, TRUE); // since we reuse now
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);// allow redirects
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // return into a variable
    curl_setopt($curl, CURLOPT_TIMEOUT, 20); // times out after 20 seconds
    curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.0) Gecko/20060728 Firefox/1.5.0" );
    $result = curl_exec($curl); // run the whole process
    print $result;

然而,当我看结果时,它并不是我想要的。如果你查看字符串的结果

“联合国人道主义官员呼吁在海地进行大规模的动员活动”

你可以看到围绕“大规模动员活动”文本的两个问号。

如果您访问实际网站,问号将呈现为一对左右引号,当您从网站查看源代码时会反映出这一点......

“联合国人道主义官员呼吁在海地开展”大规模动员活动“,

我想知道如何抓住双引号而不是我看到的问号。

感谢所有建议。

祝你们新年快乐

2 个答案:

答案 0 :(得分:1)

与PHP无关,与curl无关,甚至没有错误。你提到的那些“问号”是ASCII字符0x93和0x94:打开双引号和关闭双引号。我不是一个PHP人,但如果你想要常规双引号

str_replace(array(chr(0x93), chr(0x94)),'"',$result) 

应该修好你。

答案 1 :(得分:0)

看起来“在上面的示例中使用的是一个特殊字符而不是正常字符”。 如果它显示,查看页面源并将过去的源复制到记事本中?而不是“它意味着它是一个特殊的角色,你需要弄清楚该角色的确切代码