$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] =>)
任何人都可以帮我这个吗?
答案 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
$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);
}