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': '已关闭'}";
展开
 我来答
jinyc007
2013-04-04 · TA获得超过934个赞
知道小有建树答主
回答量:398
采纳率:75%
帮助的人:478万
展开全部

你这个数据应该是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>"; // 输出查看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
adophper
2013-04-04 · TA获得超过232个赞
知道小有建树答主
回答量:570
采纳率:0%
帮助的人:178万
展开全部
这个是不是json格式?

如果是就用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);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a89005356
2013-04-04
知道答主
回答量:14
采纳率:0%
帮助的人:4.6万
展开全部
$json = {'price:90;00..........'};
$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);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chouyou
2013-04-04 · TA获得超过140个赞
知道小有建树答主
回答量:246
采纳率:0%
帮助的人:121万
展开全部
for( var t in json ){
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'];

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式