如何在PHP中将URL拆分为其组件?

时间:2011-06-02 17:31:40

标签: php url

正则表达式从来都不是我的优点之一,这个让我很难过。作为项目的一部分,我想在PHP中开发一个SEO链接类。通过Apache处理mod_rewrite对我来说相当简单,而且效果很好。

但是,我想创建一个能够根据我传入的动态URL生成SEO链接的函数作为函数的第一个(也是唯一的)参数。

例如,这将是PHP中的函数调用:

<a href="<?= SEO::CreateLink('blog/post.php?post=123&category=5') ?>" title="Blog Post Title">Blog Post Title</a>

函数CreateLink然后将分析传入的字符串,并输出如下内容:

blog/blog-post-title

博客文章的URL存根已存储在数据库中。我认为实现这一目标的最佳方法是分析传入的动态URL字符串,并生成要分析的关联数组。我的问题是,正则表达式将采用URL并在PHP中生成以下关联数组?

link_pieces['page_type'] = 'blog/post';
link_pieces['post'] = 123;
link_pieces['category'] = 5;

哪里page_type是没有扩展名的基本目录和请求页面,其他数组值是请求变量?

2 个答案:

答案 0 :(得分:6)

您可以使用parse_urlparse_str,无需正则表达式。

答案 1 :(得分:3)

使用parse_url将网址分成几部分:

  

此函数解析URL并返回一个关联数组,其中包含存在的URL的各种组件。

然后使用parse_str来细分URL的查询字符串部分。