【发布时间】:2016-08-19 02:49:05
【问题描述】:
我有几个 PHP 字符串($url1、$url2、..),如下所示:
$url1 = "http://build:f9280396f83a0@mobile.com:8080/job/new-ios-2.1/buildWithParameters";
$url2 = "http://build:f9280396f83a0@mobile.com:8080/job/new-android-8.2/buildWithParameters";
如何获取/job/ 之后和/buildWithParameters 之前的子字符串?这是 $url1 的预期输出:
new-ios-2.1
到目前为止,我已经尝试过使用substr 函数:
例如,$url1 = substr($url, -10);。我无法通过这种方法找到上述所需的工作部分。有没有更好的方法在 PHP 中做到这一点?
【问题讨论】:
-
正则表达式 ->
preg_match('/(?:\/job\/)(.*)(?:\/buildWithParameters)/', $url1, $matches); echo $matches[1];。这很粗糙,毫无疑问,一个更好的模式,但我觉得这是你应该走的路。 Example -
你可以把它炸开,eval.in/625391.. 注意
$url不是你定义的变量,所以substr($url,总是会失败。 -
@Darren 你的正则表达式太宽了,它匹配第一次出现的
/job/到最后一次出现的/buildWithParameters/demo 之间的整个字符串,正确的方法请在下面查看我的答案:) -
@AhmadHajjar 这就是为什么我说有更好的模式 ;-) +1'd 你的答案
-
我的眼睛总是在效率和性能上,这让我对你的其他评论视而不见......对不起,伙计:D,感谢您的 +1 :)