我有这个字符串:
&report1=1616078531&report2=1850168139&report3=5957523384&report4=5781950301&END
我正在尝试获取报告编号(在“& report”和“=”之间)(在此示例中)ID为#1850168139(result = 2)的报告。我正在使用一个简单的get_string_between函数,但它不起作用,因为它从字符串中第一次出现的“& report”中提供了整个字符串。
示例:
$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);
}
这是一个非常简单的功能,可以在大多数情况下完成工作,但它并没有真正帮助到这里。
答案 0 :(得分:0)
您可以获得如下参数。如果您想获取参数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'];
?>
答案 1 :(得分:0)
这是解决问题的好方法。您需要一个用户定义的函数,它将报告ID和整个masterstring作为参数。
在该函数中,您需要构建一个正则表达式模式(使用正向前瞻),如下所示:
image
在这里演示:https://regex101.com/r/iD0fZ4/1
接下来,您需要在主字符串上使用新构造的正则表达式进行测试。如果失败了,你应该返回0之类的内容并中断函数。
如果测试成功,请告诉它返回应该是您的报告ID的第一个捕获组。