2013-03-15 71 views
0

我有以下的(變化的)結構的鏈接:拆分用PHP /使preg_split鏈路

http://website.com/category/product/abc12345

到的第一類和將ProductName變化關於它們的長度,但ID(ABC12345)總是位於最後一個「/」之後,長度約6-8個字符。

我試圖提取用下面的代碼的鏈接:

preg_split('/[/]/', $val, $arr); 
$narr[] = end($arr); 

與VAL是所述鏈路和常用3作爲陣列,結果應該在被粘貼 NARR是我想保存到數組中。稍後會有一個文件,所以在這裏並不重要。不幸的是,當我嘗試這種方式時,我的結果總是空的。

+0

你究竟想從URL中提取什麼? '類別/產品/ abc12345'? – 2013-03-15 15:29:50

+0

它只是abc12345 – hurley 2013-03-15 15:30:50

+0

如果你只是想將字符串(URL)解析爲一個字符串數組......你可以試試php函數explode()。那麼你可以做一些像$ myItem =「explode('/',urlStringvar)[4]」 – 2013-03-15 15:33:31

回答

4

我會爲:

$urlParts = parse_url($myUrl); 
$parts = explode('/', $urlParts['path']); 
$productId = array_pop($parts); 

這樣的話,你有錨(#內容)或查詢參數沒有問題

+0

這份摘錄如下:/ category/products/abc12345 – hurley 2013-03-15 15:36:37

+0

抱歉,被偷走了。我糾正了我的答案。 – nekaab 2013-03-15 15:37:08

+0

我用什麼來代替'路徑'? – hurley 2013-03-15 15:49:22

1

在以下條件下:

  • 的產物(ABC12345)總是在URL的結尾
  • 否查詢字符串/ PARAMS

嘗試以下正則表達式:

preg_match('/\/([\w]+)\/?$/', $val, $arr); 
$product = $arr[1]; 
+0

有一個'/'在很多地方 – hurley 2013-03-15 15:37:06

+0

哦,對。我正在使用Chrome檢查器對此進行測試。我的錯誤,儘管似乎缺少的是引號? – 2013-03-15 22:44:05

1

我會用preg_match(ID = 123):

if (preg_match('#.*/(.*)#', $val, $match)) { 
    $result = $match[1]; 
} 

你也可以使用一些如簡單如strrpossubstr

$result = substr($val, strrpos($val, '/') + 1);