【问题标题】:PHP print only some part of the stringPHP 只打印字符串的一部分
【发布时间】: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 :)

标签: php string substring trim


【解决方案1】:

您可以使用爆炸功能。第四个键的值将根据您的期望

$url1 = "http://build:f9280396f83a0@mobile.com:8080/job/new-ios-2.1/buildWithParameters";
$urlarr=explode('/', $url1);
print_r($urlarr);

【讨论】:

    【解决方案2】:

    使用这个正则表达式:

      preg_match('/\/job\/([^\/]*)\/buildWithParameters/', $url1, $matches);
      print_r($matches[1]);
    

    这将匹配/job/ 的首次出现和/buildWithParameters/ 的首次出现之间的字符串

    查看演示here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多