使用PHP将Curl检索的HTML字符串转换为JSON,并使用AJAX

我正在使用Javascript(AJAX; Prototype)和PHP(Curl)构建一个刮刀。
网址是通过 AJAX到PHP / Curl。</ p>

响应是一个巨大的HTML字符串。 我想将JSON中的字符串发送到Javascript,以便我可以处理它。</ p>

如果我发送原始的responseText它工作正常,html(字符串)get在我的屏幕上呈现。 但是,当我尝试PHP的json_encode()函数时,我得到'null'。</ p>

我做错了什么? 或者有更好的方法将HTML字符串转换为JSON吗? 我正在运行PHP5.3,尝试了JSON_FORCE_OBJECT但没有运气..请帮助我,我一直在敲打这个太久了... :( </ p>

这是 当前的PHP代码(如果我删除它运行的json_encode函数):</ p>

  $ url = $ _GET ['url']; 

$ ch = curl_init()或 die(curl_error());

ncurl_setopt($ ch,CURLOPT_URL,$ url);
curl_setopt($ ch,CURLOPT_RETURNTRANSFER,1);

$ scrape = curl_exec($ ch)或die(curl_error() );

echo json_encode($ scrape);
echo curl_error($ ch);

ncurl_close($ ch);
</ code> </ pre>
</ div>

展开原文

原文

I am building a scraper with Javascript (AJAX; Prototype) and PHP (Curl). The url is served trough AJAX to the PHP/Curl.

The response is a huge HTML string. I would like to send the string in JSON to Javascript so I can process it.

If I send the raw responseText it works just fine, the html (string) get's rendered on my screen. However when I try PHP's json_encode() function, I get 'null'.

What am I doing wrong? Or is there a better way to convert the HTML string to JSON? I'm running PHP5.3, tried JSON_FORCE_OBJECT but no luck.. please help me, I have been banging my head on this one for way too long.. :(

This is the current PHP code (if I remove the json_encode function it works):

$url = $_GET['url'];

$ch = curl_init() or die(curl_error()); 

curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$scrape = curl_exec($ch) or die(curl_error()); 

echo json_encode($scrape);
echo curl_error($ch);

curl_close($ch);

dongmeba4877
dongmeba4877 谢谢你的评论。我告诉过你,但它没有任何区别($json=array();array_push($json,$scrape);echojson_encode($json);//如果我把json_encode留下,我得到'Array'回)
大约 11 年之前 回复
dongqian9013
dongqian9013 尝试将$scrape放入数组然后进行编码。请发表评论,说明这是否对您有任何影响。
大约 11 年之前 回复

1个回答



你的$ scrape是否包含utf8编码的字符串?
json_encode()仅适用于utf8。</ p>

尝试</ p>

  $ scrape = mb_convert_encoding($ scrape,'utf-8'); 
</ code> </ pre>

之前 json_encode </ p>
</ div>

展开原文

原文

Does your $scrape contain utf8 encoded string? json_encode() works only with utf8.

Try doing

$scrape = mb_convert_encoding($scrape, 'utf-8');

before json_encode

dongpao9437
dongpao9437 这解决了! 现在我看到我得到了什么垃圾......我可以从这里做到:)谢谢!
大约 11 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问