如果倒数第二个字符是数字

时间:2013-11-11 14:28:29

标签: php numeric

我想弄清楚,如何检查字符串的倒数第二个字符是否为数字。

我的字符串是:

$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
}

7 个答案:

答案 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)) {}