gpt4 book ai didi

php - 如何在PHP中查找以 ','分隔的字符串

转载 作者:可可西里 更新时间:2023-11-01 13:49:14 25 4
gpt4 key购买 nike

我有两种类型的字符串第一个

"/css/style.min.css HTTP/1.1" 200 7832 index.php?firstId=5&secondid=4,6,8 HTTP/1.1"

第二种

"/css/style.min.css HTTP/1.1" 200 7832 /index.php?firstId=123&secondid=4,6,8" "Mozilla/5.0

我想用一个适用于所有情况的代码提取 4,6,8

我试过了

$line = '/index.php?firstId=123&secondid=4,6,8" "Mozilla/5.0';
$nbpers = findme($line, 'secondid=', '"') ;

function findme($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);
}

但它只适用于第一种情况

我还尝试了这个正则表达式 /.*?(\d+)$/ 来查找以数字结尾的字符串,我在这个网站上测试了它,但是 HTTP/1.1以数字结尾,所以这不是一个好主意

最佳答案

您可以提取 secondid= 之后所有以逗号分隔的数字

(?:\G(?!\A),|secondid=)\K\d+

参见 regex demo .

详细信息:

  • (?:\G(?!\A),|secondid=) - 匹配上一个成功匹配的结尾和 ,(参见 \G(?!\A),) 或 (|) secondid= 子串
  • \K - 省略到目前为止匹配的整个文本
  • \d+ - 一位或多位数字

参见 PHP demo :

$s = '"/css/style.min.css HTTP/1.1" 200 7832 /index.php?firstId=123&secondid=4,6,8" "Mozilla/5.0';
preg_match_all('~(?:\G(?!\A),|secondid=)\K\d+~', $s, $results);
print_r($results[0]);

关于php - 如何在PHP中查找以 ','分隔的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41245279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com