다음과 같은 문자열이 있습니다 (예제의 문자는 숫자 또는 텍스트 일 수 있으며 대문자 또는 소문자 또는 둘 모두 일 수 있음) 값이 문장 인 경우 작은 따옴표 사이 여야합니다) :정규식을 사용하여 문자열 파열
다음과 같은 결과를 얻으려면 어떻게해야합니까?
Array([0]=>"a",[1]=>"b",[2]=>"c",[3]=>"(d,e,f)",[4]=>"g",[5]=>"'h,i j'",[6]=>"k")
정규 표현식을 사용하면 빠르고 깨끗한 해결책이 될 것입니다. 어떤 생각?
편집 :
$separator="*"; // whatever which is not used in the string
$Pattern="'[^,]([^']+),([^']+)[^,]'";
while(ereg($Pattern,$String,$Regs)){
$String=ereg_replace($Pattern,"'\\1$separator\\2'",$String);
}
$Pattern="\(([^(^']+),([^)^']+)\)";
while(ereg($Pattern,$String,$Regs)){
$String=ereg_replace($Pattern,"(\\1$separator\\2)",$String);
}
return $String;
이, 괄호 사이의 모든 쉼표를 대체합니다 : 이 내가 괄호 사이의 긴 부분을 갖는 문자열에 대한 매우 느린이다, 지금까지 한 일이다. 그런 다음 나는 쉼표로 그것을 폭발시킬 수 있으며 $separator
을 원래의 쉼표로 대체하십시오.
당신은() 함수를 폭발 시도? ref - http://php.net/manual/en/function.explode.php –
그리고 지금까지 어떤 시도를 했습니까? 실제 문제는 무엇입니까 (다른 사람이 당신을 위해 그것을하기를 원합니다). –
입력 문자열이 어떻게 표시되는지 자세히 설명하십시오. 그것은 항상 단지''와''''소문자가 항상 소문자이고 그 중 하나만 필요합니까? – dognose