首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取a和b之间的字符串

问获取a和b之间的字符串
EN

Stack Overflow用户
提问于 2015-04-22 17:11:11
回答 2查看 769关注 0票数 2

我有这个字符串:

代码语言:javascript
复制
&report1=1616078531&report2=1850168139&report3=5957523384&report4=5781950301&END

我正在尝试获取ID为#1850168139 (result = 2)的报告(在本例中,介于"& report“和”=“之间)的报告编号。我使用了一个简单的报告函数,但它不起作用,因为它给出了字符串中第一次出现“& get_string_between”时的整个字符串。

示例:

代码语言:javascript
复制
$report_number = get_string_between($reports_list_id, "&report", "=".$report_id."&");

其中$report_list_id是上面的字符串,$report_id是1850168139。

它给我的结果是:

代码语言:javascript
复制
1=1616078531&report2

但我需要的是只得到"2“。

我一直在努力解决这个问题。如果能得到任何帮助,我将不胜感激!

编辑:如果你想知道,下面是get_string_between()函数:

代码语言:javascript
复制
function get_string_between($string, $start, $end){
  $string = " ".$string;
  $ini = strpos($string,$start);
  if ($ini == 0) return "";
  $ini += strlen($start);
  $len = strpos($string,$end,$ini) - $ini;
  return substr($string,$ini,$len);
}

这是一个非常简单的函数,在大多数情况下都可以完成工作,但在这里它并没有真正的帮助。

EN

回答 2

Stack Overflow用户

发布于 2015-04-22 17:35:52

你可以得到像follows.If这样的参数,你想要得到参数report1,report2,report3 & report4,然后它就会帮到你。

代码语言:javascript
复制
<?php
    $string = '&report1=1616078531&report2=1850168139&report3=5957523384&report4=5781950301&END';
    parse_str($string, $url_parts);
    //print_r(url_parts);
    $report1 = $url_parts['report1'];
    $report2 = $url_parts['report2'];
    $report3 = $url_parts['report3'];
    $report4 = $url_parts['report4'];
?>
票数 0
EN

Stack Overflow用户

发布于 2015-04-22 17:37:17

这里有一个很好的解决问题的方法。您需要一个用户定义的函数,它接受报告ID和整个主字符串作为参数。

在该函数中,您将需要构造一个正则表达式模式(使用正向先行),如下所示:

代码语言:javascript
复制
report(\d)=(?=MyReportIDToBeTested)

演示:https://regex101.com/r/iD0fZ4/1

接下来,您将需要在主字符串上使用新构造的regex进行测试。如果失败,你应该返回类似于0的东西并中断函数。

如果测试成功,告诉它返回第一个采集组,这个采集组应该是您的报告ID。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29792803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档