gpt4 book ai didi

来自 Array with Multine 的 PHP 正则表达式 preg_match 不匹配所有 block

转载 作者:可可西里 更新时间:2023-10-31 23:27:17 26 4
gpt4 key购买 nike

想知道是否有人可以帮助我使用以下正则表达式,我无法匹配 block multine CF.{Coordonnees Abonne}: 在 PHP 的 preg_match 函数中使用时。

奇怪的是,当我在线执行正则表达式时,尽管该 block 在另一个组中,它似乎仍然有效 regex101 example

这是代码: source code

<?php
$response = array(
1 => 'CF.{Temps}: 1',
2 => 'CF.{Etat}: return',
3 => 'CF.{Code}: 2',
4 => 'CF.{Values}: plaque',
5 => '',
6 => 'CF.{Coordonnees}: LA PERSONNE',
7 => ' ',
8 => ' 10000 LA VILLE',
9 => ' ',
10 => ' 0500235689',
11 => ' 0645788923',
12 => ' Login : test@mail.com',
13 => ' Password : PassWord!',
14 => '',
15 => 'CF.{Groupe}: 3',
16 => 'CF.{Date}: 4',
);

print_r(parseResponseBody($response));

function parseResponseBody(array $response, $delimiter = ':')
{
$responseArray = array();
$lastkey = null;

foreach ($response as $line) {
if(preg_match('/^([a-zA-Z0-9]+|CF\.{[^}]+})' . $delimiter . '\s(.*)|([a-zA-Z0-9].*)$/', $line, $matches)) {
$lastkey = $matches[1];
$responseArray[$lastkey] = $matches[2];
}
}

return $responseArray;
}
?>

输出:

Array
(
[CF.{Temps}] => 1
[CF.{Etat}] => return
[CF.{Code}] => 2
[CF.{Values}] => plaque
[CF.{Coordonnees}] => LA PERSONNE
[] =>
[CF.{Groupe}] => 3
[CF.{Date}] => 4
)

还有我需要提取的最终结果:

Array
(
[CF.{Temps}] => 1
[CF.{Etat}] => return
[CF.{Code}] => 2
[CF.{Values}] => plaque
[CF.{Coordonnees}] => LA PERSONNE

10000 LA VILLE

0500235689
0645788923
Login : test@mail.com
Password : PassWord!
[CF.{Groupe}] => 3
[CF.{Date}] => 4
)

最佳答案

您必须检查迭代时的当前值是否以 block 开头。虽然不是同时:

function parseResponseBody(array $response, $delimiter = ':') {
$array = [];
$lastIndex = null;
foreach ($response as $line) {
if (preg_match('~^\s*(CF\.{[^}]*})' . $delimiter . '\s+(.*)~', $line, $matches))
$array[$lastIndex = $matches[1]] = $matches[2];
elseif ((bool) $line)
$array[$lastIndex] .= PHP_EOL . $line;
}
return $array;
}

Live demo

关于来自 Array with Multine 的 PHP 正则表达式 preg_match 不匹配所有 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48931533/

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