2014-12-23 3 views
-1

새 줄이 따옴표 안에 있지 않으면 새 줄에서 문자열을 분할 할 수 있습니까?새 줄을 따옴표로 묶지 않은 경우 새 줄에 문자열 삽입

$string = 'aa\nbb\n"cc\ndd"'; 
$arr = explode("\n", $string); 
//$arr = array('aa','bb','"cc','dd"'); 

내가 원하는 :

당신의 예에서
$arr = array('aa','bb','cc\ndd'); 
+3

아포스트로피의'\ n'은 줄 바꿈이 아닙니다. 백 슬래시 뒤에'n '이 오는 (적절히 이스케이프되지 않은) 백 슬래시입니다. 이 조합은 아포스트로피로 묶인 문자열에서 사용될 때 특별한 의미가 없으므로 PHP는이를 문자 그대로 해석합니다 (예 : 백 슬래시와 'n'). – axiac

답변

0

, '... \ n ...'줄 바꿈없는, axiac 지적한다. PHP의 개행 문자는 큰 따옴표로 쉽게 표현할 수 있으므로 PHP는이를 개행 문자로 해석합니다. 아마도 당신은 의미 다음 :

$arr = preg_split("/(\n)(?=(?:[^\"]|\"[^\"]*\")*$)/m", $string); 

참고 :이 경우

$string = "aa\nbb\n\"cc\ndd\""; 

, 당신은 따옴표 사이에없는 모든 줄 바꿈을 잡을해야이 같은 정규식 스타일의 분할을 만들 수 있습니다 당신이 뉴 라인을 다루고 있기 때문에 멀티 라인 플래그 (m).

관련 문제