Home > Article > Backend Development > PHP 调用新浪滚动新闻
http://roll.news.sina.com.cn/interface/rollnews_ch_out_interface.php?col=90
这个是数据采集,有多种方式实现,既可以用file_get_contents,也可以使用curl
可以看这个网站视频http://www.php100.com/html/shipinjiaocheng/PHP100shipinjiaocheng/2009/0416/810.html
他返回的是 js 语句
本帖最后由 xuzuning 于 2012-11-30 18:28:33 编辑
他返回的是 js 语句
去除掉开始的 “var jsonData = ”和最后的“;”,处理后才可识别
<?php$url='http://roll.news.sina.com.cn/interface/rollnews_ch_out_interface.php?col=90';$s = file_get_contents($url);$content=str_replace('var jsonData =','',$s);$content=str_replace(';','',$content);$J=json_decode($content); echo $J->serverSeconds;?>
不是跟你说了吗?那是 js 语句
自然也就不是 json
php json_decode 要求的 json 的格式比较严格,键和值都要用双引号括起
所以才有“处理后"一说
直接js 处理吧 跟sina 一样 js 可以直接将返回结果解析出来
你判断一下取前10条就行了
楼主,先提供一个js 版的先用着,php 版的有点折腾,主要是sina 的js 响应不是特别标准.无法直接用json_decode 来处理.
<script src="http://roll.news.sina.com.cn/interface/rollnews_ch_out_interface.php?col=90"></script><script type="text/javascript"> function addItem(title,url) { var html = '<a href="'+url+'" >'+title+'</a><br/>'; document.getElementById("demo_content").innerHTML += html; } function init() { var listdata = jsonData.list; // console.log( listdata ); var title =''; var url = ''; for(var item in listdata){ title = listdata[item].title; url = listdata[item].url; // alert(title); addItem(title,url) } }</script><body onload="init()"><div id = 'demo_content'>here is the content<hr/></div></body>
引用 3 楼 xuzuning 的回复:本帖最后由 xuzuning 于 2012-11-30 18:28:33 编辑
他返回的是 js 语句
去除掉开始的 “var jsonData = ”和最后的“;”,处理后才可识别
PHP code??12345678
为什么要这样呢?
直接引入不就可以了啊!看#7楼的 http://bbs.csdn.net/topics/390300559#post-393078980
mu_rain :你好!看了你在http://bbs.csdn.net/topics/390300559#post-393078980的代码,可以用。如果修改下,让每一行限制在10个汉字,同时,调用前15条新闻,怎么做呢?