Preg_Match来自URL的最后一个字符串

时间:2013-12-11 11:38:12

标签: php preg-match

我要做的是通过preg_match从网址获取分页

示例:http://www.google.com/page/223

我需要的是这个网址是“223”

我尝试使用此代码但无效...

preg_match('~"http://www.google.com/page/(.*)"~iU', 'http://www.google.com/page/223', $page);

print_r($page);

3 个答案:

答案 0 :(得分:2)

第一种方式

preg_match("/[^\/]+$/", "http://www.google.com/page/223", $matches);
$last_word = $matches[0]; // 223

第二种方式

substr(strrchr(rtrim($url, '/'), '/'), 1)

第三种方式

$ex = explode("/",$_SERVER["PHP_SELF"]);
      echo end($ex); 

答案 1 :(得分:1)

为什么在模式中使用"?字符串中没有引号。 U也是错误的。

应该是:

preg_match('~http://www.google.com/page/(.*)~', 'http://www.google.com/page/223', $matches);
echo $page = $matches[1];

答案 2 :(得分:1)

不需要正则表达式或爆炸,只需使用字符串函数:

$url = "http://www.google.com/page/223";
$lastPart = substr($url, strrpos($url, "/")+1); // +1 to move 1 past the /

如果您希望它更安全(例如'/ page /'必须存在):

$url = "http://www.google.com/page/223";
$lastPart = substr($url, strrpos($url, "/page/")+6); // +6 to move 1 past the '/page/'
if($lastPart===false){ $lastPart = 0; echo "Not found";}

总是尝试使用字符串函数而不是正则表达式/数组函数,字符串函数要快得多。