我怎么能用,和|爆炸字符串

时间:2012-07-15 17:31:57

标签: php explode

我怎么能爆炸呢? mars@email.com,123,12,1|art@hur.com,321,32,2

输出应为:

$email = mars@email.com
$score = 123
$street = 12
$rank = 1

然后删除|

$email = art@hur.com
$score = 321
$street = 32
$rank = 2


$string = mars@email.com,123,12,1|art@hur.com,321,32,2
explode( ',', $string );

是正确的吗?

7 个答案:

答案 0 :(得分:2)

 foreach(explode('|', $str) as $v){
     $data = explode(',',$v);
     echo '$email = '.$data[0].
     '$score = '.$data[1].
     '$street = '.$data[2].
     '$rank = '.$data[3];
 }

答案 1 :(得分:1)

您可能希望使用strtok()而不是explode()。

http://www.php.net/manual/en/function.strtok.php

答案 2 :(得分:1)

$arr = preg_split( '"[,|]"', 'mars@email.com,123,12,1|art@hur.com,321,32,2' );
$len = count($arr);
for( $i = 0; $i < $len; $i+=4 ) {
    $email = $arr[$i];
    $score = $arr[$i+1];
    $street = $arr[$i+2];
    $rank = $arr[$i+3];
}

答案 3 :(得分:0)

您需要将新数组存储在变量&gt;

$arr = explode(',',$string);

我不知道你想要用第二部分做什么(在|之后),但你可以通过这样做得到第一个标准&gt; $half = explode('|',$string)[0];

答案 4 :(得分:0)

您需要按正确的顺序解开它:

  • 首先由|

  • 分隔的块
  • 然后将单个单元格分隔为,

这样做的简明方法是:

$array = array_map("str_getcsv", explode("|", $data));

会给你一个2D数组。

答案 5 :(得分:0)

使用strtok并爆炸。

$tok = strtok($string, "|");

while ($tok !== false) {
    list($email, $score, $street, $rank) = explode(',', $tok);
    $tok = strtok(",");
}

答案 6 :(得分:0)

我认为你想要的是这样的

   $output = array();

foreach (explode('|', $string) as $person) {
    $output[] = array(
        'email'   =>    $person[0],
        'score'   =>    $person[1],
        'street'  =>    $person[2],
        'rank'    =>    $person[3]
    )
}

这会将所有结果存储在多维数组中。例如,要打印人1的电子邮件,您可以使用

echo $output[0]['email'];   // mars@email.com

并访问人2的街道,你会使用

echo $output[1]['street'];   // 32