preg_split从字符串中获取结束编号

时间:2012-02-09 15:17:54

标签: preg-split

$str = "check-me-01";
if(preg_match("#(\d){0,}$#",$str)) {
    $strArr = preg_split("#(\d){0,}$#",$str,2);
    print_r($strArr);
}

我使用上面的脚本从字符串中获取01,可以是任何数字。 但我总是得到

  

数组([0] => check-me- [1] =>)

任何人都可以帮我这个吗?

2 个答案:

答案 0 :(得分:0)

如果您尝试从该字符串中获取01,则应该只使用preg_match,而不是preg_split。访问该链接,并检查如何获得最终匹配。

引用:

  

int preg_match(string $ pattern,string $ subject [,array& $ matches [,int $ flags = 0 [,int $ offset = 0]]])

注意&$matches。这就是你想要更密切关注的内容。

preg_split将使用匹配的任何内容作为分隔符:这是您面临的问题。因此,任何匹配都不会出现在结果数组中 - 只有任何一方都有。

答案 1 :(得分:0)

您应该使用positive lookahead
我还使用了POSIX brackets


PHP

$str = "check-me-01";
if (preg_match("#[[:digit:]]$#",$str)) {
    // the regex matches a zero length string, so just the position when it is true
    // the (?=regex) triggers a positive lookahead
    // it is true in this case, if you have many digits at the end of the string
    $strArr = preg_split("#(?=[[:digit:]]+$)#",$str,2);
    print_r($strArr);
}