匹配字符串中的连字符以进行数组输出

时间:2018-09-29 09:58:54

标签: php arrays regex string preg-match-all

我有一个字符串,其中应包含名称和注册日期:

Dipak Misra - 18 Nov 2018 10:20

我想像这样将字符串转换成数组:

Array ( [0] => Dipak Misra [1] => 18 Nov 2018 [2] => 10:20 ) 

我正在使用preg_match_all()函数:

$re = '/\w+(?:[-\s]\w+)*/'; 
$str = "Dipak Misra - 18 Nov 2018 10:20"; 
preg_match_all($re, $str, $matches);
print_r($matches[0]);

我正在得到这样的输出:

Array ( [0] => Dipak Misra [1] => 18 Nov 2018 10 [2] => 20 ) 

请指导我。

3 个答案:

答案 0 :(得分:3)

如果该字符串的格式未更改,则可以在空格,连字符空格或在左侧和右侧均出现数字而不是匹配的空格处进行拆分。

Regex demo

例如:

- |(?<=\d) (?=\d)

结果:

print_r(preg_split("/ - |(?<=\d) (?=\d)/", "Dipak Misra - 18 Nov 2018 10:20"));

答案 1 :(得分:1)

使用preg_match()([^-]+)\s+-\s+(.*)\s(\d+:\d+)作为模式

$re = '/([^-]+)\s+-\s+(.*)\s(\d+:\d+)/'; 
$str = "Dipak Misra - 18 Nov 2018 10:20"; 
preg_match($re, $str, $matches);
unset($matches[0]);
print_r($matches);

Check result in demo

答案 2 :(得分:0)

{{1}}

输出

enter image description here