2013-09-23 4 views
1

문자열을 구문 분석하는 방법에 대한 도움이 필요합니다. 나는 지금 내가 얻을 수 있도록이 문자열을 구문 분석하는 방법을 혼동하고있어 VVBHMjMzMDRK문자열이 복잡한 동안 PHP에서 문자열 패턴을 구문 분석하는 방법

| TVhHMTAwMDBK MALANGBONG, GARUT | | QkRPMjA3MTlK MALANGKE 바랏, MASAMBA | VVBHMjMzMDVK MALANGKE, MASAMBA

말랑 : 나는 아래 구조와 문자열을 이 같은 패턴 :

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

패턴 출력은 CITY_NAME 있습니다 | RandomCode

나는 공간에서 폭발 사용하려고해야

하지만, 도시의 이름은 때때로 공백이 포함되어 있습니다. 이 문제를 해결하기 위해 PHP의 어떤 기능을 사용할 수 있습니까?

+0

그들은 모두 말란에서 시작합니까? 아니면 다른 가능성이 있습니까? – Kuzgun

+1

구조가 없으므로 (무작위 비트가 제공됩니다) 가서 데이터 제공 업체에게 자세한 내용을 알려달라고하십시오. –

+0

안녕 Kuzgun, 단어 MALAN이 일부 변수로 대체 될 것입니다. SUR로 대체 예를 들면 : | axasdasWsdzx SURABAYA, 바랏 다야 | SURABAYA 등 tverWasfxGMH 및 또는 JAKA 등 우리 나라의 도시 이름과 유사한처럼 다른 단어로 raplaced 될 수있다 JAKARTA | nmTRGBSjgWVB 자카르타 바랏, TANGERANG | kmliHYDgDjgg –

답변

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/Wd4Wmc

- RandomCode 부품이 모두 12 자까지 보장하는 경우 또는 http://codepad.viper-7.com/6ujl3p

preg_split 여기 예를 들어

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

데모, 더 적합 할 수있다

+0

감사합니다. @Phil, 이제 작동합니다. $ pattern = '/ (? <=^|) [A-Z,] +? \ | [A-Za-z0-9] + (? = | $) /'; $ pattern은 모든 문자열을 검사하기 전에 | 모든 문자열 | 공간에 의해 제한됩니까? 네, 이것이 제가 의미하는 바입니다. 나는 문자열 패턴과 문자열 조작에 대해 배우고 이해하는 데 더 많은 시간이 필요합니다. 모든 사람의 도움에 감사드립니다.) –

+0

@ParminSupaidiST 자세한 내용은 http://www.regular-expressions.info/lookaround.html을 참조하십시오. – Phil

관련 문제