您没有任何分隔符。定界符将模式括起来:
使用 PCRE 函数时,需要用分隔符将模式括起来。定界符可以是任何非字母数字、非反斜杠、非空白字符。
通常,“修饰符”是设置正则表达式选项(区分大小写、多行模式等)的字符,位于结束分隔符之后。
因此,此错误消息表示它认为您正在使用_
修饰符,因为它似乎在模式之后。尝试将您的模式包含在标准分隔符中/
,如/PATTERN_GOES_HERE/
您还需要匹配捕获组中的某些内容。.*
会做(匹配任何数量的任何东西):
preg_match('/(?<data1>.*)_(?<data2>.*)_(?<data3>.*)_(?<data4>.*)_(?<data5>.*)_(?<data6>.*)/', $str, $matches);
print_r($matches);
输出:
Array
(
[0] => String_Length_Location_Time_Degree_Alt
[data1] => String
[1] => String
[data2] => Length
[2] => Length
[data3] => Location
[3] => Location
[data4] => Time
[4] => Time
[data5] => Degree
[5] => Degree
[data6] => Alt
[6] => Alt
)
或者,您的案例看起来像是一个很好的候选者explode
,它将一个字符串分成一个数组,每次遇到分隔符时都会拆分字符串,您可以将其指定为 undescore, "_"
。