2011-10-08 130 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

参考文献: