使用PHP提取URL指定路径段的技术问题咨询
解决PHP提取URL指定路径段的问题
你的原代码存在问题:parse_url()返回的是包含scheme、host、path等键的关联数组,直接把这个数组传给explode()是错误的,必须先提取出路径(path)部分再处理。
针对示例URL http://mydomain.nl/first/second/third/,正确提取second和third段的步骤如下:
- 用
parse_url()解析URL,获取路径部分 - 分割路径字符串,过滤掉分割后产生的空元素(路径开头和结尾的斜杠会导致空值)
- 根据索引获取目标路径段
修正后的代码示例
$url = parse_url($entry['source_url']); // 先提取路径部分,确保路径存在再处理 if (isset($url['path'])) { // 分割路径并过滤空元素 $urlFragments = array_filter(explode('/', $url['path'])); // 此时路径段数组为 ['first', 'second', 'third'] $second = $urlFragments[1] ?? null; // 获取second段 $third = $urlFragments[2] ?? null; // 获取third段 }
补充说明
array_filter()会自动清除分割后产生的空字符串,避免无效元素干扰?? null做兜底处理,防止路径段不存在时触发报错- 如果URL路径结构不固定,建议先判断数组长度再取值,避免索引越界
内容的提问来源于stack exchange,提问作者Idka-80
相关产品推荐
相关产品推荐

