Q&A

라이믹스에서 알림 메시지창에 \n 이 줄바꿈이 안되고 그대로 출력되는데요.

2020.08.11 16:22
352
0
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

  • 2020.08.11 17:45 #1441580

    PHP에서 \n 은 쌍따옴표 안에서만 사용하실 수 있습니다.
    (\n 뿐만 아니라 \로 시작하는 특수문자들은 모두 포함됩니다. 16진수 코드도 마찬가지구요.)
     

    echo 'Hello, World! \n I love webstack!';
    // Output:
    // Hello, World! \n I love webstack!

    echo "Hello, World! \n I love webstack!";
    // Output:
    // Hello, World!
    // I love webstack!

     

  • 2020.08.12 00:37 #1441637
    감사합니다. " 큰따옴표로 바꾸니 잘 되네요.
  • 2020.08.11 17:59 #1441585

    이 설명은 이해하기 쉽게하기 위해 실제 PHP동작과 변형된 이야기로 설명하고 있음을 알려드립니다. 그냥 아 이렇게 동작하겠구나 라는 정도로 이해해 주시면됩니다. (상수선언 이야기부분만요)

     

    스트링문자에서 \의 역할은 보통 다음 문자열을 문자열로 포함할지 안할지를 출력하는데 사용합니다.

    $a = '\\ 를 붙이면 \\가 출력됩니다.'; // return \를 붙이면 \가 출력됩니다.
    말씀하신 것처럼 \를 붙이게 되면 \의 뒷부분의 문자열을 무조건 스트링으로 포함한다는 뜻이 되거든요

    예를들어서 PHP에서
    ' 이라는 문구를 넣으면 문자열로 출력해줍니다.
    라는 문구를 넣고 싶으면

    $a = '' 이라는 문구를 넣으면 문자열로 출력해줍니다.';

    라고 하면 에러가 납니다.

    '<- 첫번째 열고 바로 다음에 ' 를 닫아버린게 되었기 때문에 신택스로 안맞게 되죠.

    그래서 ' 를 문자열로 포함하기 위해서

    $a = '\' 이라는 문구를 넣으면 문자열로 출력해줍니다.';

    그런데 "쌍다옴표안에서 \n 줄바꿈의 문자는 사실 PHP의 상수선언된 것 처럼 동작하는 친구입니다.

    '' <- 안에서는 \를 이용하여 다음문자열을 스트링으로 무조건 설정한다라는 뜻이 되었지만 "" 에서는 전혀 다른 동작을 합니다.

    PHP 에서 '<- 일반 따옴표는 무조건 안에 있는 문자를 그대로 출력하는 속성을 가지게 되는데 " 쌍따옴표는 안에 변수선언을 같이 쓰면서 사용할 수 있게 됩니다.

    $val = '변수';
    $a = "{$val}의 내용이 문자열이라면 {$val}는 문자열로 출력됩니다"; // 변수의 내용이 문자열이라면 변수는 문자열로 출력됩니다

    이렇게 출력되죠.

    즉 \n자체를 줄바꿈으로 인식하게 작동 시킬 수 있다는 뜻이죠.

    그리고 보통은 줄바꿈을 깔끔하게 할려면 그냥..

    $string = "

    ";

    이렇게 깔끔하게 엔터 쳐도 실제 트위터나 디스코드 같은곳에 request보내면 엔터로 인식합니다.

    굳이 그렇게 쓰지 않아도 되는거죠.

    어차피 브라우저에서는 \n은 <Br>으로 인식하지 않으니까요.

     

    굳이 확실하게 엔터표시를 하고 싶은 경우는 다음과 같이 사용해도 됩니다.

     

    $a = '첫번째줄' . PHP_EOL . '두번째줄';

    return 

    첫번째줄

    두번째줄

     

  • 2020.08.12 00:37 #1441641
    자세한 설명 감사합니다. 공부해 보겠습니다.
  • 2020.08.12 06:17 #1441740
    라이믹스에서 발견되는 잘못 사용된 것들을 보면서 XE는 참 요상한 물건이라는 생각이 듭니다. 저게 XE에서는 그냥 줄바꿈 되었거든요 ㅋㅋ