php 获取字符串内特定的值
怎么获取这里面price的值90,和date的值2013-4-3?这是很长一段内容,我只截取了其中2段,希望数量多的时候可以全部获取到。{'price':90.00,'d...
怎么获取这里面price的值90,和date的值2013-4-3?这是很长一段内容,我只截取了其中2段,希望数量多的时候可以全部获取到。{ 'price': 90.00, 'date': '2013-4-3 13:48:07', 'status': '已成交'},{'price': 90.00, 'date': '2013-4-2 21:26:36', 'status': '已成交'},谢谢
获取到的price和date值分别存入数组$array_price和$array_date里面。字符串是这样的:$json="{ 'price': 90.00, 'date': '2013-4-3 13:48:07', 'status': '已购买'},{'price': 90.00, 'date': '2013-4-2 21:26:36', 'status': '待付款'},{ 'price': 90.00, 'date': '2013-4-2 14:09:08', 'status': '已关闭'}"; 展开
获取到的price和date值分别存入数组$array_price和$array_date里面。字符串是这样的:$json="{ 'price': 90.00, 'date': '2013-4-3 13:48:07', 'status': '已购买'},{'price': 90.00, 'date': '2013-4-2 21:26:36', 'status': '待付款'},{ 'price': 90.00, 'date': '2013-4-2 14:09:08', 'status': '已关闭'}"; 展开
4个回答
展开全部
你这个数据应该是json格式。在php中,要使用json_decode()解析成对象或者数组,这样子才方便使用。不过这里有个局限,举个例子:
$bad_json = "{ 'bar': 'baz' }"; // 键值对,要用双引号,单引号是无效的。所以返回null。
json_decode($bad_json); // null
你这里的数据刚好就是单引号包裹键名和数值的,所以用json_decode会返回null。
解决办法:
1、严格按照json的格式来构建这个数据,这样子就很方便的使用json_decode函数了。这应该是最有好的方法。建议先尝试这个。
2、对数据进行处理,单引号转成双引号,然后使用json_decode函数。这个要自己写个处理数据的函数。这里给出一个简单的处理,只是简单的替换,未考虑数据里面所含的单引号。
$data=str_replace("'", '"', $data); // 单引号替换成双引号
$data=json_decode($data);
3、使用第三方类库
追问
不大明白,对php不是很懂,能帮忙写段直接能用的代码不?谢谢
追答
那要给出一个含有完整结构的数据。先试下下面这段代码。
// 务必要符合这样子的一个数据结构。这里使用了你提供的数据
$data="[{'price':'90.00','date':'2013-4-3 13:48:07','status':'已成交'},{'price':'90.00', 'date':'2013-4-2 21:26:36', 'status':'已成交'}]";
$data=str_replace("'", '"', $data);
$data=json_decode($data);
foreach($data as $item)
echo "Price : " . $item->price ." - Date : " . $item->date ."<br />";
这是根据你补充的数据修改后的代码:
$json="[{'price': 90.00, 'date': '2013-4-3 13:48:07', 'status': '已购买'},{'price': 90.00, 'date': '2013-4-2 21:26:36', 'status': '待付款'},{ 'price': 90.00, 'date': '2013-4-2 14:09:08', 'status': '已关闭'}]";
$json=str_replace("'", '"', $json);
$json=json_decode($json);
$array_price=array();
$array_date=array();
foreach($json as $item)
{
$array_price[]=$item->price;
$array_date[]=$item->date;
}
echo "<pre>".print_r($array_price, true)."</pre>"; // 输出查看
echo "<pre>".print_r($array_date, true)."</pre>"; // 输出查看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个是不是json格式?
如果是就用json_decode($str,true)转换成数组,
数组就好获取了啥!用foreach分别获取每段中的price和date
如果是就用json_decode($str,true)转换成数组,
数组就好获取了啥!用foreach分别获取每段中的price和date
追问
具体怎么写?能详细点不?我测试了下输出的是null,不知道哪儿出错了
追答
我根据你在下面的回复修改的,具体也不知道你的数据格式 什么样的!
$json="{ 'price': 90.00, 'date': '2013-4-3 13:48:07', 'status': '已成交'},{'price': 90.00, 'date': '2013-4-2 21:26:36', 'status': '已成交'},{ 'price': 90.00, 'date': '2013-4-2 14:09:08', 'status': '已成交'}";
$s = str_replace("'","\"", $json);
$s = '['.$s.']';
$data = json_decode($s,true); //$data是数组
print_r($data);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
$json = {'price:90;00..........'};
$arr = json_decode($json);
从数组里面取应该没问题了吧。
$arr = json_decode($json);
从数组里面取应该没问题了吧。
更多追问追答
追问
具体怎么写?能详细点不?
追答
$str = "{ 'price': 90.00, 'date': '2013-4-3 13:48:07', 'status': '已成交'}";
$str = str_replace("'", '"', $str);
$str = str_replace(", ",",", $str);
$str = str_replace(": ",":", $str);
$str = str_replace(' "', '"', $str);
$str = str_replace('已成交','a', $str); //如果需要截取中文 转码成utf-8
$json = json_decode($str);
print_r($json);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for( var t in json ){
alert("price:" +t.price +",date:"t.date);
}
alert("price:" +t.price +",date:"t.date);
}
更多追问追答
追问
是php语句不?
追答
js语句
php的话
$s=stripslashes($json); // 去除json字符串的转义符
$a=json_decode($s,true); //$a是数组
$array_price =array();
$array_date =array();
foreach($a as $ary){
$array_price[] = $ary['price'];
$array_date[] = $ary['date'];
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询