如何从第二组引号中获取单词/内容?

时间:2012-10-31 17:05:40

标签: php expression quotes

我有一个返回字符串的循环,如下所示......

  • 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);

但我也希望在第二组引号中输入数字,我该怎么做?

由于

2 个答案:

答案 0 :(得分:3)

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;

您可以在this demo中看到它,对于您的三个测试用例,输出:

D111 Free Delivery**
0.00
D111 3/5 day delivery service***
6.99
D111 2/3 day delivery service***
8.99

编辑以显示如何捕获自己变量中的每个字段。

答案 1 :(得分:0)

爆炸!!!!

//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