$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] => )
有人可以帮我吗?
$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] => )
有人可以帮我吗?
$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);
}
如果您尝试从该字符串中获取 01,则应该只使用preg_match,而不是 preg_split。访问该链接,并检查如何获得结果匹配项。
引用:
int preg_match ( 字符串 $pattern , 字符串 $subject [, 数组 &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
注意&$matches
。这就是你想要更仔细地观察的东西。
preg_split 将使用它匹配的任何内容作为分隔符:这就是您面临的问题。因此,任何匹配的东西都不会出现在结果数组中——只有两边的东西。