라이믹스에서 알림 메시지창에 \n 이 줄바꿈이 안되고 그대로 출력되는데요.
CMS/프레임워크 | Rhymix 1.9 |
---|---|
개발 언어 | PHP 7.2 |
사이트운영모듈의 php에서 조건에 따라 경고 알림창을 띄웁니다.
$message = '활동 부족으로 인해 글쓰기가 제한되었습니다.\n'.$msg_date.'댓글 '.$module_part_config['limit_access_document_wr']['com'].'개 이상 작성 후 글쓰기가 가능합니다.\n현재 작성한 댓글 '.number_format($member_com_count).'개 입니다.\n활동부족으로 용도에 맞지 않는 게시판에 글을 작성하면 삭제처리 됩니다.';
$this->alertMsg($message);
그런데 \n 이 XE 사용할때는 줄바꿈으로 작동했는데 라이믹스로 바꾸고 지금 확인해 보니 그냥 문자로 그대로 출력이 됩니다.
라이믹스에서는 저 코드에서 새로 바꿔야 할 부분이 있는 건가요??
댓글 5
PHP에서 \n 은 쌍따옴표 안에서만 사용하실 수 있습니다.
(\n 뿐만 아니라 \로 시작하는 특수문자들은 모두 포함됩니다. 16진수 코드도 마찬가지구요.)
// Output:
// Hello, World! \n I love webstack!
echo "Hello, World! \n I love webstack!";
// Output:
// Hello, World!
// I love webstack!
이 설명은 이해하기 쉽게하기 위해 실제 PHP동작과 변형된 이야기로 설명하고 있음을 알려드립니다. 그냥 아 이렇게 동작하겠구나 라는 정도로 이해해 주시면됩니다. (상수선언 이야기부분만요)
스트링문자에서 \의 역할은 보통 다음 문자열을 문자열로 포함할지 안할지를 출력하는데 사용합니다.
$a = '\\ 를 붙이면 \\가 출력됩니다.'; // return \를 붙이면 \가 출력됩니다.
말씀하신 것처럼 \를 붙이게 되면 \의 뒷부분의 문자열을 무조건 스트링으로 포함한다는 뜻이 되거든요
예를들어서 PHP에서
' 이라는 문구를 넣으면 문자열로 출력해줍니다.
라는 문구를 넣고 싶으면
$a = '' 이라는 문구를 넣으면 문자열로 출력해줍니다.';
라고 하면 에러가 납니다.
'<- 첫번째 열고 바로 다음에 ' 를 닫아버린게 되었기 때문에 신택스로 안맞게 되죠.
그래서 ' 를 문자열로 포함하기 위해서
$a = '\' 이라는 문구를 넣으면 문자열로 출력해줍니다.';
그런데 "쌍다옴표안에서 \n 줄바꿈의 문자는 사실 PHP의 상수선언된 것 처럼 동작하는 친구입니다.
'' <- 안에서는 \를 이용하여 다음문자열을 스트링으로 무조건 설정한다라는 뜻이 되었지만 "" 에서는 전혀 다른 동작을 합니다.
PHP 에서 '<- 일반 따옴표는 무조건 안에 있는 문자를 그대로 출력하는 속성을 가지게 되는데 " 쌍따옴표는 안에 변수선언을 같이 쓰면서 사용할 수 있게 됩니다.
$val = '변수';
$a = "{$val}의 내용이 문자열이라면 {$val}는 문자열로 출력됩니다"; // 변수의 내용이 문자열이라면 변수는 문자열로 출력됩니다
이렇게 출력되죠.
즉 \n자체를 줄바꿈으로 인식하게 작동 시킬 수 있다는 뜻이죠.
그리고 보통은 줄바꿈을 깔끔하게 할려면 그냥..
$string = "
";
이렇게 깔끔하게 엔터 쳐도 실제 트위터나 디스코드 같은곳에 request보내면 엔터로 인식합니다.
굳이 그렇게 쓰지 않아도 되는거죠.
어차피 브라우저에서는 \n은 <Br>으로 인식하지 않으니까요.
굳이 확실하게 엔터표시를 하고 싶은 경우는 다음과 같이 사용해도 됩니다.
$a = '첫번째줄' . PHP_EOL . '두번째줄';
return
첫번째줄
두번째줄