测试字符串
1-gc-communications/edit/profile_picture
首先让我说第一个-
之前的第一个数字是我需要提取的ID。从第一个-
到第一个/
将是'名称'我需要提取。之后的一切我都不在乎。所以我要找的是一个例子:
Array ( [0] => 1 [1] => gc-communications [2] => /edit/profile_picture )
我能想到的最好的是以下模式(以及他们的结果 - 限制为3)
模式:/-|edit\/profile_picture/
结果:Array ( [0] => 1 [1] => gc [2] => communications/edit/profile_picture )
^这个有缺陷,因为它同时破灭。
模式:/~-~|edit\/profile_picture/
结果:Array ( [0] => 1-gc-communications/ [1] => )
^重大失败。
我知道我可以做2个限制,然后在第一个/
上休息,然后在结果数组上执行preg_split
,但我希望能用一条线来完成这项工作。< / p>
提前致谢!
如果这是禁止的话,我会向其他人打开一个班轮&#34;的解决方案。
preg_split("#([^-]+)-([^/]+)/(.*)#", "1-gc-communications/edit/profile_picture",-1,PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY)
结果
Array ( [0] => 1 [1] => gc-communications [2] => edit/profile_picture )
答案 0 :(得分:2)
试试这个
$str = '1-gc-communications/edit/profile_picture';
$match = preg_split('#([^-]+)-([^/]+)/(.*)#', $str, 0, PREG_SPLIT_DELIM_CAPTURE);
print_r($match);
像
一样返回 array (
0 => '',
1 => '1',
2 => 'gc-communications',
3 => 'edit/profile_picture',
4 => '',
)