0

次のような文字列を返すループがあります...

  • 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 番目の引用符セット内の数値も取得したいのですが、どうすればよいでしょうか?

ありがとう

4

2 に答える 2

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;

この demoで動作していることを確認できます。3 つのテスト ケースでは、次のように出力されます。

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

独自の変数で各フィールドをキャプチャする方法を示すために編集されました。

于 2012-10-31T17:08:20.193 に答える
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
于 2012-10-31T17:21:57.657 に答える