簡體   English   中英

PHP使用正則表達式將字符串解析為數組

[英]PHP parsing string to array with regular expressions

我有一個像這樣的字符串:

$msg,array('goo','gle'),000,"face",'book',['twi'=>'ter','link'=>'edin']

我想使用preg_match_all將其轉換為可能如下所示的數組:

array(
     0 => $msg,
     1 => array('goo','gle'),
     2 => 000,
     3 => "face",
     4 => 'book',
     5 => ['twi'=>'ter','link'=>'edin']
);

請注意,所有值都是字符串

我不是很擅長正則表達式,所以我一直無法為此創建模式 多個preg調用也可以。

我建議使用preg_split和以下正則表達式:

$re = "/([a-z]*(?:\\[[^]]*\\]|\\([^()]*\\)),?)|(?<=,)/"; 
$str = "\$msg,array('goo','gle'),000,\"face\",'book',['twi'=>'ter','link'=>'edin']"; 
print_r(preg_split($re, $str, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY));

示例程序的輸出:

Array
(
    [0] => $msg,
    [1] => array('goo','gle'),
    [2] => 000,
    [3] => "face",
    [4] => 'book',
    [5] => ['twi'=>'ter','link'=>'edin']
)

我知道你要求一個正則表達式解決方案,但我今天正在eval()踢:

eval('$array = array('.$string.');');

print_r($array);

另請注意, 000不是字符串,將轉換為0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM