2011-01-19 188 views
1

喜更換網址我所知道的preg_replace可用於格式化字符串,但 我需要在有關地區幫助 我的網址會是這樣使用的preg_replace PHP

www.example.com/en/index.php 

www.example.com/fr/index.php 

我想要得到的是

結果爲

www.example.com/index.php 

我需要它的php代碼,以便在會話中設置

任何人都可以請解釋一下嗎?

+1

sry不是故意的 – Harish 2011-01-19 11:39:37

回答

2

preg_replace('/www.example.com\/(.+)\/index.php/i', "www.example.com/index.php?lang=$1", $url);會做的事

+0

爲什麼你在那裏使用括號? – SilentGhost 2011-01-19 11:36:05

+0

我以爲OP可能需要捕獲的語言代碼,所以我添加了捕獲括號。當然,我應該更改代碼以反映以後如何訪問這些代碼。 – naivists 2011-01-19 11:45:14

1

這是做這件事: -

$newurl = preg_replace('/\/[a-z][a-z]\//', '/', $url); 

注意,搜索字符串出現引號和正斜槓(「/.../」)和那麼URL中的正斜槓就必須被轉義(\ /)。語言代碼然後與'[a-z] [a-z]'相匹配,但是還有其他幾種方法可以做到這一點,並且在有三個字母代碼或大寫字母的情況下,您可能需要更寬鬆的東西。同樣,您可能需要採取更嚴格的措施,具體取決於可能出現的其他URL方案。

1

我在這種情況下懷疑這將是更快只需使用str_replace如下:

$cleanedData = str_replace(array('www.example.com/en/', 'www.example.com/fr/'), '', $sourceData); 
0

最後我有一個方法,我感謝Purpletoucan

$newurl = preg_replace('/\/(en|esp|fr)\//', '/', $url); 

它的工作,現在我的想法!