skoy03 发表于 2023-11-15 21:48

php 正则取相关数据该如何写代码?

X-Limit: current_qps=1; limit_qps=5; current_pv=5268; limit_pv=10000"
请教下,php正则里如何写规则取 current_qps和 current_pv这个数据?

丶七年 发表于 2023-11-15 22:05

<?php

$pattern = '/current_qps=(\d+).*?current_pv=(\d+)/';

$string = 'X-Limit: current_qps=1; limit_qps=5; current_pv=5268; limit_pv=10000';

if (preg_match($pattern, $string, $matches)) {
    $current_qps = $matches;
    $current_pv = $matches;

    echo 'current_qps: ' . $current_qps . PHP_EOL;
    echo 'current_pv: ' . $current_pv . PHP_EOL;
} else {
    echo 'No match found.' . PHP_EOL;
}

?>

以上

tszlfasy 发表于 2023-11-15 22:12

本帖最后由 tszlfasy 于 2023-11-15 22:15 编辑

在PHP中,如果需要通过正则表达式找到"current_qps"和"current_pv"的数值,我们可以使用preg_match_all函数,具体的实现方式如下:
<?php
$str = 'X-Limit: current_qps=1; limit_qps=5; current_pv=5268; limit_pv=10000';
preg_match_all('/(current_qps|current_pv)=(+)/', $str, $matches);
$result = array_combine($matches, $matches);

echo 'current_qps: ' . $result['current_qps'] . PHP_EOL;
echo 'current_pv: ' . $result['current_pv']. PHP_EOL;
?>

在这个例子中,通过"/(current_qps|current_pv)=(+)/"这个正则表达式,我们可以取得包含"current_qps"或"current_pv"的键值对。使用array_combine函数将相对应的键和值组合成一个数组,通过它就能获取到需要的数值。


skoy03 发表于 2023-11-15 22:14

丶七年 发表于 2023-11-15 22:05
以上

感谢大佬

skoy03 发表于 2023-11-15 22:15

tszlfasy 发表于 2023-11-15 22:12
在PHP中,如果需要通过正则表达式找到"current_qps"和"current_pv"的数值,我们可以使用preg_match_all函数 ...

感谢大佬:handshake

javonz 发表于 2023-11-16 08:52

本帖最后由 javonz 于 2023-11-16 08:54 编辑


<?php
$string = "X-Limit: current_qps=1; limit_qps=5; current_pv=5268; limit_pv=10000";

$tmp = explode(';' , $string);

$list = [];
foreach($tmp as $key =>$value){
   if( strstr($value , 'current_qps' ) OR strstr( $value , 'current_pv')){
         $tmpList = exploed('=' , $value);
         $listTmp[$tmpList] = $tmpList;
         $list[] = $listTmp;
}
}

神农架曹鑫 发表于 2023-11-16 09:18

$str = 'X-Limit: current_qps=1; limit_qps=5; current_pv=5268; limit_pv=10000';
$pattern_qps = '/current_qps=(\d+)/';
$pattern_pv = '/current_pv=(\d+)/';

preg_match($pattern_qps, $str, $matches_qps);
$qps = $matches_qps;

preg_match($pattern_pv, $str, $matches_pv);
$pv = $matches_pv;

echo "current_qps: " . $qps . "\n";
echo "current_pv: " . $pv . "\n";
页: [1]
查看完整版本: php 正则取相关数据该如何写代码?