我想弄清楚,如何检查字符串的倒数第二个字符是否为数字。
我的字符串是:
$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
网址类似于:http://www.domain.com/2/,http://www.domain.com/3/等等。
是否可以确定在最后一个反斜杠/
之前的URL末尾是否存在数字?
类似的东西:
if (is_numeric($url, second-to-last-character)) {
// Do real stuff
} else {
// Do whatever
}
答案 0 :(得分:4)
正则表达式怎么样?
if (!preg_match('#/\d+/?$#', $url))
// There is no numeric at the end, abort !
我建议这样做是因为你不知道你的id会有多少位数,所以你不能只测试倒数第二个字符。
答案 1 :(得分:4)
$fullurl = explode('/',$_SERVER['SCRIPT_NAME']);
$last = $fullurl[count($fullurl)-1];
//echo $last;
if(is_int($last))
echo "integer";
else
echo "Not integer";
答案 2 :(得分:2)
您想使用substr
。您可以使用它来获得倒数第二个字符。
http://php.net/manual/en/function.substr.php
is_numeric(substr($url, -2, 1);
答案 3 :(得分:0)
if (is_numeric(substr($url, -2,1) ) {
你应该做,你不需要正则表达式
答案 4 :(得分:0)
使用substr
if(is_numeric(substr($url,-2,1))){
//dosomething
}else{
echo "Invalid URL!";
}
在substr
中,第一个参数是字符串,第二个参数是偏移量,如果偏移量是负数,它将从结束开始然后向后,最后一个是长度。如果未指定,则将转到字符串的末尾。因此,如果您想获得最后两个字符,您可以substr($url,-2)
答案 5 :(得分:0)
$url='http://www.domain.com/2/,http://www.domain.com/3/';
if(is_numeric (substr($url,-2,1))){
echo "This is number";
}else{
echo "This is not number";
}
答案 6 :(得分:-1)
我不想离场,但是当我处理URL时,通常我会删除结束斜杠
$url = rtrim($url, '/');
http://www.php.net/manual/en/function.rtrim.php
通常你不需要那个斜线,当爆炸URL时它会变得混乱。您可以使用前面的答案中提到的substr()函数来获取字符串的最后一个字符。 AFAIK substr()函数比使用正则表达式执行这样一个简单的任务要快。
if (is_numeric(substr($url, -1)) {}
修改强>
我刚刚意识到,如果你正在处理价值观> 9你会遇到麻烦。 更好地获得另一个答案中提到的整数。如果你喜欢性能稍差的奇怪代码,你可以使用那个而不是explode():
$value = strrev(strtok(strrev($url), '/'));
if (is_numeric($value)) {}