PHP列表爆炸变量

时间:2010-08-21 23:29:02

标签: php list variables explode

使用PHP,我试图给每个特定的文本赋予自己的变量。我相信这可以通过在php中使用爆炸列表功能来实现。类似于下面代码的东西:

list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);

但是,上面的代码使用冒号(:)分隔文本。我想要分开的文字在引号内,例如"WORD"。我想分开的示例文本如下:

  

“AULLAH1”“01/07/2010 15:28”“55621454”“123456”“123456.00”

我希望文本/数字AULLAH101/07/2010 15:2855621454123456123456.00都具有特定的PHP变量。如果可能,我希望PHP爆炸功能通过开头引号(“)和结束引号(”)来分隔内容。

4 个答案:

答案 0 :(得分:3)

更好的方法是使用preg_match_all

$s = '"AULLAH1" "01/07/2010 15:28 " "55621454" "123456" "123456.00"';
preg_match_all('/"([^"]*)"/', $s, $matches);
list($user, $pass, $uid, $gid, $gecos, $home, $shell) = $matches[1];

最相似的方式是使用preg_split

list($user, $pass, $uid, $gid, $gecos, $home, $shell) =
    preg_split('/"(?: ")?/', $s, -1, PREG_SPLIT_NO_EMPTY);

答案 1 :(得分:1)

这是最简单的解决方案,但肯定不是最健壮的

$data = '"AULLAH1" "01/07/2010 15:28 " "55621454" "123456" "123456.00"';

list($user, $pass, $uid, $gid, $gecos, $home, $shell)
    = explode('" "', trim($data, '"'));

var_dump(array($user, $pass, $uid, $gid, $gecos, $home, $shell));

// gives:
array(7) {
  [0]=>
  string(7) "AULLAH1"
  [1]=>
  string(17) "01/07/2010 15:28 "
  [2]=>
  string(8) "55621454"
  [3]=>
  string(6) "123456"
  [4]=>
  string(9) "123456.00"
  [5]=>
  NULL
  [6]=>
  NULL
}

答案 2 :(得分:1)

这应该用正则表达式完成。请参阅preg_match功能。

答案 3 :(得分:0)

explode('-', str_replace('"', '', str_replace('" "', '"-"', $data)));