【发布时间】:2016-04-07 01:18:44
【问题描述】:
您好,我的正则表达式有问题。
例如我有这个文本
$textMessage = "|nif|<00/00/03364301P>|lat|<not set>|long|<not set>|deviceId|<1F26DE6896ADC816-001346E604E7>|messageId|<70154>";
我想得到一个这样的数组
$data = array(
array("nif" => "00/00/03364301P"),
array("lat" => "not set") // etc
)
使用字符串中的所有数据,我尝试了此功能。
function getArrayDataSMS($textMessage){
$regexType = '/\|([a-zA-Z]+)\||<[\d]+>/';
$rowValueData = preg_match_all($regexType, $textMessage, $matches, PREG_SET_ORDER);
foreach ($matches as $key => $match) {
$arrayData[trim($match[1])] = trim($match[2]);
}
return $arrayData;
}
但响应不正确
array(2) {
[0]=>
string(5) "|nif|"
[1]=>
string(3) "nif"
}
array(3) {
[0]=>
string(6) "<4545>"
[1]=>
string(0) ""
[2]=>
string(4) "4545"
}
对此有任何想法吗? .
【问题讨论】:
-
或者只是将其分解、移位、逐块、foreach 分配到新容器
-
我不认为在这里使用正则表达式是个好方法。
-
你真的想要一个多维数组还是一个简单的关联数组?