我有这个字符串:
&report1=1616078531&report2=1850168139&report3=5957523384&report4=5781950301&END我正在尝试获取ID为#1850168139 (result = 2)的报告(在本例中,介于"& report“和”=“之间)的报告编号。我使用了一个简单的报告函数,但它不起作用,因为它给出了字符串中第一次出现“& get_string_between”时的整个字符串。
示例:
$report_number = get_string_between($reports_list_id, "&report", "=".$report_id."&");其中$report_list_id是上面的字符串,$report_id是1850168139。
它给我的结果是:
1=1616078531&report2但我需要的是只得到"2“。
我一直在努力解决这个问题。如果能得到任何帮助,我将不胜感激!
编辑:如果你想知道,下面是get_string_between()函数:
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);
}这是一个非常简单的函数,在大多数情况下都可以完成工作,但在这里它并没有真正的帮助。
发布于 2015-04-22 17:35:52
你可以得到像follows.If这样的参数,你想要得到参数report1,report2,report3 & report4,然后它就会帮到你。
<?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'];
?>发布于 2015-04-22 17:37:17
这里有一个很好的解决问题的方法。您需要一个用户定义的函数,它接受报告ID和整个主字符串作为参数。
在该函数中,您将需要构造一个正则表达式模式(使用正向先行),如下所示:
report(\d)=(?=MyReportIDToBeTested)演示:https://regex101.com/r/iD0fZ4/1
接下来,您将需要在主字符串上使用新构造的regex进行测试。如果失败,你应该返回类似于0的东西并中断函数。
如果测试成功,告诉它返回第一个采集组,这个采集组应该是您的报告ID。
https://stackoverflow.com/questions/29792803
复制相似问题