php 正则取相关数据该如何写代码?
X-Limit: current_qps=1; limit_qps=5; current_pv=5268; limit_pv=10000"请教下,php正则里如何写规则取 current_qps和 current_pv这个数据? <?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: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函数将相对应的键和值组合成一个数组,通过它就能获取到需要的数值。
丶七年 发表于 2023-11-15 22:05
以上
感谢大佬 tszlfasy 发表于 2023-11-15 22:12
在PHP中,如果需要通过正则表达式找到"current_qps"和"current_pv"的数值,我们可以使用preg_match_all函数 ...
感谢大佬:handshake 本帖最后由 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;
}
}
$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]