2011-10-08 148 views
1

我有以下網址。 http://domain.com/userfiles/dynamic/images/whatever_dollar_1318105152.png 除了userfiles部分和最後一個下劃線之外,url中的所有內容都可以更改。基本上我想獲得的網址是userfiles/dynamic/images/whatever_dollar_的一部分,這是一個很好的方法。我是開放的或JavaScript或PHP。獲取字符串的特定部分

+0

http://php.net/manual/en/function.parse-url.php – dm03514

回答

5

在PHP中使用parse_url在其各個部分中拆分url。獲取返回的path部分。它包含沒有域和查詢字符串的路徑。

之後使用strrpos找到路徑內_的最後發生。

隨着substr你可以複製路徑的第一部分(直到找到_),你就完成了。

+3

+1避免使用正則表達式的URL時,還有其他的選擇:) – FailedDev

+0

感謝Parse_url和PHP_URL_PATH是巨大的。爲什麼避免在URL上使用正則表達式?似乎更有效地採用正則表達式的方式。 – Pinkie

+1

對於像這樣的操作,正則表達式幾乎沒有更高的效率。即使你可以在這個問題上保存兩三行代碼,在屏幕後面,你將開始一個複雜的解析器,並且有許多複雜的操作。在這些簡單的情況下,正則表達式通常比幾個簡單的函數更不可讀。但用正則表達式解析URL與使用正則表達式解析XML不一樣糟糕。 :) – GolezTrol

1

假設你的字符串存儲在$ s的,簡單地說:

echo preg_replace('/.*(userfiles.*_).*/', '$1', $s); 
+0

嘿,這個作品。爲什麼它低調。 – Pinkie

3

你可以,用JavaScript,請嘗試:

var string = "http://domain.com/userfiles/dynamic/images/whatever_dollar_1318105152.png"; 

var newString = string.substring(string.indexOf('userfiles'),string.lastIndexOf('_')); 
alert(newString); // returns: "userfiles/dynamic/images/whatever_dollar" (Without quotes). 

JS Fiddle demo

參考文獻: