2015-07-13 114 views
1

我有$url = "example.com/en/category/node/extra/";,我需要從$url刪除extra,我該怎麼做?如何使用PHP從URL中刪除最後一個元素?

+1

爆炸,array_pop和內爆AGA在? –

+0

我很抱歉,但我錯過了這裏的背景。您可以重寫網址而無需多餘。否則我會在這裏推薦一些htaccess。在這種情況下,它的副本http://stackoverflow.com/questions/10839047/in-htaccess-remove-word-from-url – Dorvalla

+0

@Dorvalla不,不,htaccess不是在這種情況下的選項。我只需要刪除網址的最後一部分。 – Xeen

回答

3

將$ _SERVER ['SCRIPT_URL']展開到數組中,移除空元素,然後刪除最後一個數組元素。然後,將它們全部重新拼起來,連同初始和尾部斜線。

$urlArray = explode('/',$_SERVER['SCRIPT_URL']); 
$urlArray = array_filter($urlArray); 

// remove last element 
array_pop($urlArray); 

$urlString = '/'.implode('/',$urlArray).'/'; 

不要將array_pop()作爲變量存儲,除非您需要最後一個數組元素。

1

方法很多,

  1. 爆炸彈出過去,然後崩潰。

  2. 使用正則表達式替換最後一個部分

  3. 我喜歡:追加../使它像「example.com/en/category/node/extra/../」因爲這個成本更低計算,更高效

如果您對其中一個感興趣並且不知道如何做到這一點,請給我留言。

1

您可以使用preg_replace函數。

preg_replace('~/[^/]*/([^/]*)$~', '//\1', $str); 

DEMO

+0

爲什麼這[^ /] *它不是必需的。網址不會包含任何空間記住。結束它到這裏/ [^ /] */$ – Raghavendra

0

試試這個作爲你的正則表達式

[^/]+/$ //to get last and replace it with empty 
1

$url = "example.com/en/category/node/extra/"; echo basename($url); echo dirname($url);

回報
extra example.com/en/category/node

相關問題