推荐使用 parse_url() 提取 url 参数部分,它自动处理问号、井号、编码等边界情况;若手动处理,需先用 strpos() 检查问号位置再 substr() 截取,且带锚点时应额外定位井号。

直接用 strpos 找问号位置,再用 substr 截取后面部分即可,但要注意边界情况。
找问号位置并截取参数部分
假设原始 URL 是 "https://example.com/page.php?name=jack&age=25",你想提取 "name=jack&age=25":
- 先用
strpos($url, '?')获取问号的索引位置 - 如果返回 false,说明 URL 没有问号,直接返回空字符串或跳过处理
- 否则用
substr($url, $pos + 1)取问号之后的所有内容
完整安全写法(推荐)
避免未检查返回值导致警告或错误:
$url = "https://example.com/page.php?name=jack&age=25"; $pos = strpos($url, '?'); $params = ($pos !== false) ? substr($url, $pos + 1) : ''; // $params 就是 "name=jack&age=25"
进阶:只取问号后、井号前的内容(兼容带锚点的 URL)
有些 URL 带锚点,比如 "page.php?x=1#section2",你可能只想取参数,不包括 #section2:
- 先定位问号位置
- 再从问号后开始找第一个
#的位置(用strpos($url, '#', $pos)) - 用
substr截取问号后到井号前的部分
更稳妥的替代方案:用 parse_url()
PHP 自带函数更适合解析 URL 结构:
$url = "https://example.com/page.php?name=jack&age=25#top"; $parsed = parse_url($url); $params = $parsed['query'] ?? ''; // 直接拿到 query 部分,自动处理边界
parse_url 不仅安全,还能正确处理编码、锚点、端口等,比手动找问号更可靠。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











