如何在字符串复杂时解析 php 中的字符串模式


How to parse string pattern in php while the string is complex

我需要你关于如何解析字符串的帮助。我有一个结构如下的字符串:

玛琅|TVhHMTAwMDBK 马朗邦,加鲁特|QkRPMjA3MTlK MALANGKE BARAT,MASAMBA|VVBHMjMzMDVK 马朗克,马桑巴|VVBHMjMzMDRK

我现在很困惑如何解析这个字符串,以便我可以得到这样的模式:

MALANG|TVhHMTAwMDBK
MALANGBONG,GARUT|QkRPMjA3MTlK
MALANGKE BARAT,MASAMBA|VVBHMjMzMDVK
MALANGKE BARAT,MASAMBA|VVBHMjMzMDVK

模式输出为 City_Name|随机码

我尝试使用按空格爆炸,但城市名称有时也包含一个空格。我可以使用 php 中的什么函数来解决这个问题?

试试这个。它适合你的例子还行

$str = 'MALANG|TVhHMTAwMDBK MALANGBONG,GARUT|QkRPMjA3MTlK MALANGKE BARAT,MASAMBA|VVBHMjMzMDVK MALANGKE,MASAMBA|VVBHMjMzMDRK';
$pattern = '/(?<=^| )[A-Z, ]+?'|[A-Za-z0-9]+(?= |$)/';
if (preg_match_all($pattern, $str, $matches)) {
    $parts = $matches[0];
}

如果您的城市名称包含大写字母、空格和逗号以外的任何内容,您可能需要调整一些字符类别。

此处的示例 - http://codepad.viper-7.com/6ujl3p

或者,如果保证 RandomCode 部分的长度均为 12 个字符,则preg_split可能更适合,例如

$pattern = '/(?<='|[A-Za-z0-9]{12}) /';
$parts = preg_split($pattern, $str);

在这里演示 - http://codepad.viper-7.com/Wd4Wmc