我有一个字符串
$str = "101WE3P-1An Electrically-Small104TU5A-3,Signal-Interference Duplexers Gomez-GarciaRobertoTU5A-3-01"
我想用数字拆分这个字符串,例如:“101WE3P-1An ....”应该是第一个元素,“104TUA ......”应该是第二个元素?
有人在几分钟之前在my previous question preg_match to match substring of three numbers consecutively?写了以下代码:
$result = preg_split('/^\d{3}$/', $page, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
基线是我想匹配三个数字后跟任何大写字母,其次是包括\ t?提前谢谢。
答案 0 :(得分:5)
您可以告诉preg_split()
使用lookahead assertion在字符串中的任意一点拆分后跟三位数。
$str = "101WE3P-1An Electrically-Small104TU5A-3,Signal-Interference Duplexers Gomez-GarciaRobertoTU5A-3-01";
$result = preg_split('/(?=\d{3})/', $str, -1, PREG_SPLIT_NO_EMPTY);
var_export($result);
提供以下数组:
array (
0 => '101WE3P-1An Electrically-Small',
1 => '104TU5A-3,Signal-Interference Duplexers Gomez-GarciaRobertoTU5A-3-01',
)
使用PREG_SPLIT_NO_EMPTY
标志,因为字符串的开头也是有三个数字的点,因此这里会发生空分割。我们可以改变正则表达式,使其不会在字符串的最开始分割,但这会让它一目了然地变得难以理解,而标志非常清晰。
答案 1 :(得分:-1)
我尝试过匹配而非分裂
preg_match_all('/^(\d{3}.*?)*$/', $str, $matches);
var_dump($matches);
似乎可以为您的样本获得正确的结果