我正在尝试从字符串中获取用户 ID,例如:
http://www.abcxyz.com/123456789/
显示为 123456789 基本上将信息剥离到第一个 / 并删除结尾 /。我确实在网上四处看了看,但似乎有很多解决方案,但没有人回答开始和结束。
谢谢 :)
更新 1
该链接可以采用两种形式:如上所述的 mod_rewrite 以及“http://www.abcxyz.com/profile?user_id=123456789”
我正在尝试从字符串中获取用户 ID,例如:
http://www.abcxyz.com/123456789/
显示为 123456789 基本上将信息剥离到第一个 / 并删除结尾 /。我确实在网上四处看了看,但似乎有很多解决方案,但没有人回答开始和结束。
谢谢 :)
更新 1
该链接可以采用两种形式:如上所述的 mod_rewrite 以及“http://www.abcxyz.com/profile?user_id=123456789”
我将使用parse_url()
从 URL 中干净地提取路径组件:
$path = parse_URL("http://www.example.com/123456789/", PHP_URL_PATH);
然后使用以下方法将路径拆分为其元素explode()
:
$path = trim($path, "/"); // Remove starting and trailing slashes
$path_exploded = explode("/", $path);
然后输出路径的第一个组件:
echo $path_exploded[0]; // Will output 123456789
这种方法适用于边缘情况,如
http://www.example.com/123456789?test
http://www.example.com//123456789
www.example.com/123456789/abcdef
乃至
/123456789/abcdef
$string = 'http://www.abcxyz.com/123456789/';
$parts = array_filter(explode('/', $string));
$id = array_pop($parts);
如果网址中没有其他数字,您也可以这样做
echo filter_var('http://www.abcxyz.com/123456789/', FILTER_SANITIZE_NUMBER_INT);
去掉所有不是数字的东西。
这可能比使用parse_url
+parse_str
组合要快一些。
如果 ID 始终是 URL 的最后一个成员
$url="http://www.abcxyz.com/123456789/";
$id=preg_replace(",.*/([0-9]+)/$,","\\1",$url);
echo $id;
如果您的域不包含任何数字,您可以使用以下方法处理这两种情况(有或没有 user_id):
<?php
$string1 = 'http://www.abcxyz.com/123456789/';
$string2 = 'http://www.abcxyz.com/profile?user_id=123456789';
preg_match('/[0-9]+/',$string1,$matches);
print_r($matches[0]);
preg_match('/[0-9]+/',$string2,$matches);
print_r($matches[0]);
?>