2011-06-02 84 views
1

正則表達式從來不是我的強項之一,而這一個讓我難住。作爲一個項目的一部分,我想在PHP中開發一個SEO鏈接類。通過Apache處理mod_rewrite對我來說相當簡單,而且效果很好。如何在PHP中將URL分解爲其組成部分?

但是,我想創建一個函數,它能夠基於我作爲函數的第一個(也是唯一的)參數傳入的動態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是基本目錄和頁面請求不帶擴展,而另一個數組的值是該請求瓦爾?

回答

3

使用parse_url打破URL分成幾部分:

此功能解析一個URL,並返回包含任何所存在的URL的各種部件的一個關聯數組。

然後使用parse_str來分解URL的查詢字符串部分。

+1

謝謝 - 男孩我現在感覺很傻。我從來沒有遇到過這些功能......! – BenM 2011-06-02 17:37:56