PHP는 줄이 '!'로 끝나지 않는 경우에만 문자열을 폭발시킵니다.

StackOverflow https://stackoverflow.com/questions/1223740

  •  11-07-2019
  •  | 
  •  

문제

PHP에서 스크립팅 프로그래밍 언어를위한 파서를 쓰고 있습니다. 해당 스크립팅 언어의 구문은 다음과 같습니다.

ZOMFG
&This is a comment
(show "Hello, World\!");

이것은 해당 언어로 작성된 페이지입니다. 안녕하세요, World! 브라우저에서. 그러나 나는 다음과 같은 코드를 가질 수 있습니다.

ZOMFG
&This is a comment !
on multiple !
lines.
(show !
"Hello, !
World\!!
");

지금은 사용합니다 explode("\n", $content) 페이지의 컨텐츠를 별도의 인덱스에 각 코드 라인을 갖는 배열로 폭발합니다. 그래서

ZOMFG
&This is a comment
(show "Hello, World\!");

:

array('ZOMFG', '&This is a comment', '(show "Hello, World\!");');

줄이 A로 끝나면! (!이 !로 탈출 할 때를 제외하고), 다음 줄을 하나의 단일 요소로 포함하여 해당 라인을 추가해야합니다. 그래서

&This is a comment !
on multiple !
lines.

becomes

&This is a comment on multiple lines.

누구 든지이 작업을 수행하는 방법을 아는 사람이 있습니까?

도움이 되었습니까?

해결책

부정적인 외관과 함께 preg_split을 사용할 수 있어야합니다.

(예를 찾고 있습니다)

$lines = preg_split('|(?<!\!)\n|', $code);

의견에 따라 이것이 Newline 캐릭터와 The! 남아 있습니다. 현재 str_replace보다 더 쉬운 솔루션을 볼 수 없습니다. 그러나 하나가 있다고 상상해보십시오 ...!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top