1

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

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

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

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

模式输出为 City_Name|RandomCode

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

4

1 回答 1

2

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

$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

于 2013-09-23T06:59:52.480 回答