我有一个循环,它返回如下所示的字符串......
- s:20:"D111 免费送货**";s:4:"0.00"
- s:32:"D111 3/5 天送货服务***";s:4:"6.99"
- s:32:"D111 2/3 天送货服务***";s:4:"8.99"
我有正则表达式从第一组引号中获取内容。
$shipping_name = preg_match('/"(.+?)"/', $shipp_option, $matches);
但我也想得到第二组引号内的数字,我该怎么做?
谢谢
我有一个循环,它返回如下所示的字符串......
我有正则表达式从第一组引号中获取内容。
$shipping_name = preg_match('/"(.+?)"/', $shipp_option, $matches);
但我也想得到第二组引号内的数字,我该怎么做?
谢谢
explode()
分隔符上的字符串;
,然后unserialize()
它们:
$string = 's:20:"D111 Free Delivery**";s:4:"0.00"';
$array = explode( ';', $string);
list( $str, $number) = array_map( 'unserialize', $array);
echo $str . ' ' . $number;
您可以在这个演示中看到它的工作,对于您的三个测试用例,输出:
D111 Free Delivery**
0.00
D111 3/5 day delivery service***
6.99
D111 2/3 day delivery service***
8.99
编辑以显示如何在其自己的变量中捕获每个字段。
爆炸!!!!
//inside your loop
$halves = explode(';', $shipp_option);
$first_half = explode(':', $halves[0]);
$second_half = explode(':', $halves[1]);
$shipping_name = trim($first_half[2], '"');//eg. D111 Free Delivery**
$shipping_price = trim($second_half[2], '"');//eg. 0.00
//end inside your loop
或者……快一点:
//inside your loop
$shipp_arr = explode(';:', $shipp_option);
$shipping_name = trim($shipp_arr[2], '"');//eg. D111 Free Delivery**
$shipping_price = trim($shipp_arr[5], '"');//eg. 0.00
//end inside your loop