前言:周五10月20日的时候,经理让做一个插件,使用的thinkphp做这个demo

使用CURL抓取远程数据时如果出现乱码问题可以加入

header("content-type:text/html;charset=utf-8");

或者使用mb_convert_encoding函数进行字符编码的转换

在这个demo中要抓取的最终信息是要经过不断的层级调用,也即是

  1.根据appkey获得所有品牌,得到品牌id

  2.根据品牌id得到所有车型,得到车型id

  3.根据车型id得到所有款式,得到款式Id

  4.根据款式Id得到详细信息

使用了json解码函数解析服务器返回的Json数据,需要注意的是不要加

//curl_setopt($ch, CURLOPT_HEADER, 1);//不要加,不然无法正确解析json数据,因为数据多了http头文件信息

json_decode函数第二个参数为true确保返回值是数组

使用$this->assign("模版变量名",$解码后的数组)

在前端的下拉列表中即可以获取到全部的品牌数据:

请选择品牌:
<select name="list1" id="list1">
<volist name="car1" id="vo">
<option value="{$vo.name}">{$vo.name}</option>
</volist>
</select>

使用ajax将选择的下拉列表值传递给后端,根据值用循环遍历数组的办法得到品牌id

 $(document).ready(function(){
var car1=$("#list1 option:selected").val();
$.ajax({
type:"post",
url:"{:U('Home/Car/car1')}",
data:"car1="+car1,
success:function(html){
if(html){
// alert(html);
$("#list2").html(html);
}
}
});
});

得到id输出车型数据,后端代码:

//得到品牌的名称
$car1=I('post.car1');
...............................//部分curl省略
$json1=json_decode($output,true);
$result = $json1['result'];
foreach($result as $a){
foreach($a as $b){
if($b==$car1){
//此处的$id1是要传递给url的
$id1=$a['id'];
}
}
}
..............................//再次进行curl操作,根据id得到所有的车型信息
$json2=json_decode($rs2,true);
$result2 = $json2['result'];
dump($result2);
//将型号的数组数据保存至session中,在型号的下拉列表中根据型号值遍历数组得到型号id
session("result2",$result2);
foreach($result2 as $val){
echo $str1='<optgroup label="'.$val['name'].'">'."<---".$val['name']."--->".'</optgroup>';
foreach($val['list'] as $v) {
$str1='<option value="'.$v['name'].'">'.$v['name'].'</option>';
echo $str1;
}
}

以上的方法是正确无误的,为什么不用session直接保存id,因为前端ajax是动态选择型号名字,直接做在一个控制器的方法中得到的不是用户选择的型号

根据型号选择款式的ajax代码跟上述类似,之后仍然是遍历,遍历session保存的数组得到型号id,之后根据id得到款式的数组数据,输出html

以上方法类推,便完成了整个demo

关于CURL的使用规则在此:http://www.cnblogs.com/wgphp/p/7707917.html

  

  

  

php抓取远程数据显示在下拉列表中的更多相关文章

  1. php curl抓取远程页面内容的代码

    使用php curl抓取远程页面内容的例子. 代码如下: <?php /** * php curl抓取远程网页内容 * edit by www.jbxue.com */ $curlPost = ...

  2. 【转载】ASP.NET以Post方式抓取远程网页内容类似爬虫功能

    使用HttpWebRequest等Http相关类,可以在应用程序中或者网站中模拟浏览器发送Post请求,在请求带入相应的Post参数值,而后请求回远程网页信息.实现这一功能也很简单,主要是依靠Http ...

  3. 利用wireshark抓取远程linux上的数据包

    原文发表在我的博客主页,转载请注明出处. 前言 因为出差,前后准备总结了一周多,所以博客有所搁置.出差真是累人的活计,不过确实可以学习到很多东西,跟着老板学习做人,学习交流的技巧.入正题~ wires ...

  4. PHP抓取远程图片教程(包含不带后缀图片)

    之前做微信登录开发时候,发现微信头像图片没有后缀名,传统的图片抓取方式不奏效,需要特殊的抓取处理.所以,后来将各种情况结合起来,封装成一个类,分享出来. 创建项目 作为演示,我们在www根目录创建项目 ...

  5. php使用curl简单抓取远程url的方法

    这篇文章主要介绍了php使用curl简单抓取远程url的方法,涉及php操作curl的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php使用curl抓取远程url的方法.分 ...

  6. 「拉勾网」薪资调查的小爬虫,并将抓取结果保存到excel中

    学习Python也有一段时间了,各种理论知识大体上也算略知一二了,今天就进入实战演练:通过Python来编写一个拉勾网薪资调查的小爬虫. 第一步:分析网站的请求过程 我们在查看拉勾网上的招聘信息的时候 ...

  7. file_get_contents抓取远程URL内容

    /** * POST URL * @param $url * @param null $post * @return false / string */ public static function ...

  8. 利用curl抓取远程页面内容

    最基本的操作如下 $curlPost = 'a=1&b=2';//模拟POST数据$cookie_file    =    tempnam('./temp','kie');//可选,保存ses ...

  9. 百度UEditor编辑器关闭抓取远程图片功能(默认开启)

    这个坑娘的功能,开始时居然不知道如何触发,以为有个按钮,点击一下触发,翻阅了文档,没有发现,然后再网络上看到原来是复制粘贴非白名单内的图片到编辑框时触发,坑娘啊............... 问题又来 ...

随机推荐

  1. PyQt5初识

    学习PyQt5是个机缘,那是因为我的linux16.04+python3.6使了浑身解数也装不上PyQt4! PyQt5的官方文档貌似是要钱的!又想快速了解这个东东,我还是借鉴了万能的博客园大佬博主: ...

  2. sanic连接mongo

    方法一: #没有密码,就是没有用户和用户密码 settings={"MOTOR_URI":"mongodb://127.0.0.1:27017/zzy"} ap ...

  3. 前端 css 进阶

    内容目录: 1.css盒子模型 2.浮动 float 3.溢出 overflow 4.定位 position 5. z-index 6.opacity 1.css盒子模型 margin:用来调节盒子与 ...

  4. linux 磁盘与文件系统管理 (鸟哥私房菜)

    各种接口磁盘在Linux中的文件名分别为 /dev/sd[a-p][1-15]:为SCSI,SATA,USB,Flash随身碟等接口的磁盘文件名 /dev/hd[a-d][1-63]:为IDE接口的磁 ...

  5. linux redis的启动---后台启动

    1.启动redis服务: redis-server 如果想要开启后台进程: 1.找到redis.conf里边的 把no 改为yes. 2.redis-server redis.conf(这个是针对两个 ...

  6. word embedding 精要整理

    word embedding 具体含义:词的实数向量化表示,可以通过向量相似性度量语义相似性,相似性原理是上下文的一致性 Embedding在数学上表示一个maping, f: X -> Y, ...

  7. Yii2 : Active Record add Not In condition

    $query = MyModel::find()->where(['not in','attribute',$array]); 參考 Yii2 : Active Record add Not I ...

  8. 一个简易h5涉及的ps技巧

    事实证明,很长时间不做,是会忘掉的呀,的呀,呀,啊~ 1.合并图层 CTRL+E合并多个图层 2.切片 3.导出 文件-------导出------存储为web所用格式-------->> ...

  9. Java KMP算法代码

    1. KMP 算法(字符串匹配算法)较 BF(朴素的字符串匹配)算法有哪些改进 1) 在主串和子串匹配的过程中,主串不再回退,只改变子串的比较位置. 2) 为子串生成对应的next数组,每次匹配失败, ...

  10. C#发邮件之命名空间System.Net.Mail

    1.添加一个类,取名为Email public class Email { /// <summary> /// 发送方发送方服务器地址 /// </summary> publi ...