我需要你的帮助来解决如何解析字符串。我有一个结构如下的字符串:
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
我尝试使用空间爆炸,但城市名称有时也包含空格。我可以使用什么功能来解决这个问题?
答案 0 :(得分:1)
试一试。它适合你的例子确定
$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);