1

文字列を解析する方法についてあなたの助けが必要です。以下の構造の文字列があります:

マラン|TVhHMTAwMDBK マランボン、ガルト|QkRPMjA3MTlK マランケ バラット、マサンバ|VVBHMjMzMDVK マランケ、マサンバ|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 に答える