실전코딩

PHP에서 javascript의 alert 상자 출력시 줄바꿈 기호 문제

· 2008-08-18 (월) 23:34:06 · 7398 · 2
원본 문서 : http://bequietzero.com/bbs/board.php?bo_table=PHP&wr_id=25
원본 문서에 가시면 보다 자세한 설명을 보실수 있습니다.
여긴 일부러 보기 쉽게 적었습니다.


PHP에서 아래와 같이 출력하면 줄바꿈 되지 못하고 출력된다.
echo "줄바꿈 안되\n줄바꿈 안되\n줄바꿈 안되";

줄바꿈 되도록 출력하는 법
$msg = preg_replace('/(\r\n|\r|\n)/', '\n', addslashes($msg));


그누보드에서는 alert 함수에서 문제가 되는데..

그누보드 common.lib.php 파일에 alert 함수안에 위 소스코드를 추가해 주면 앞으로

\n로 해도 줄바꿈이 처리되어서 메시지가 출력된다.

기존에 \\n로 되었 있기 때문에

"메시지\n메시지"

위와 같이 출력된다는 단점이 있다.
기존의 출력 부분을 다 바꾸어 줘야 한다 ㅎㅎ;;

대신 \n을 입력 했을때 스크립트가 멈추어 버리는 불상사는 막을수 있다.
[이 게시물은 관리자님에 의해 2011-10-31 17:12:10 PHP & HTML에서 이동 됨]
|

댓글 2개

그누의 alert에서 \n을 넣을 경우 스크립트가 멈추는 경우는 간단합니다.

예를 들어 alert("시작\n끝")이렇게 입력하면
<script>alert("시작
끝");</script>
이런 식으로 개행처리가 되어 스크립트에서 에러로 인식합니다. php에서는 상관없으나 script는 문자열이 도중 개행처리되면 에러납니다.

스크립트와 php에서 뿌려줄 때와의 차이를 이해하셔야 할 것 같네요:

1. 스크립트의 예
<script>alert("경고\n경고");</script>

2. 위의 스크립트를 php의 echo로 나타낼 때
<?php
echo "<script>alert(\"경고\\n경고\");</script>";
?>
혹은
echo '<script>alert("경고\n경고");</script>';
으로 하면 됩니다. php에서 작은 따옴표와 큰 따옴표는 차이가 있습니다.
아하 script문자열이 개행처리되면 에러 나는것 때문에 그렇군요...
전 무엇때문에 그렇게 되는지 몰라서... 그냥 오류겠거니 했는데
정확히 알려 주셨네요 ^^
실제로 확인 해보니 정말 그렇게 되네요~~
정말 좋은 정보 감사 드립니다.


그래서 위 팁을 쓰면 echo로 출력하기전에 \n을 \\n 으로 만들어 줘요..

굳이 그누보드에서는 쓸 필요가 없지만..

간혹가다가 입력된 문자열을 뿌려줄때 \n 문자가 들어 있으면 오류가 난다더라고요..
그래서 그쪽에서 사용하던 팁을 가져 왔습니다 ^^
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

8,188건
+
제목 글쓴이 날짜 조회
08-09-05 조회 4,568
08-09-05 조회 3,505
08-09-05 조회 5,089
08-09-05 조회 2,971
08-09-05 조회 3,564
08-09-05 조회 3,477
08-09-05 조회 2,921
08-09-05 조회 3,444
08-09-04 조회 3,335
08-09-04 조회 3,253
08-09-03 조회 4,414
08-09-03 조회 3,394
08-09-03 조회 2,667
08-09-03 조회 2,678
08-09-03 조회 3,388
08-09-01 조회 4,500
08-08-29 조회 3,506
08-08-28 조회 2,758
08-08-28 조회 5,545
08-08-27 조회 3,266
08-08-21 조회 4,794
08-08-18 조회 7,399
08-08-18 조회 2,872
08-08-18 조회 2,843
08-08-18 조회 2,442
08-08-17 조회 2,585
08-08-16 조회 4,389
08-08-15 조회 3,257
08-08-15 조회 3,863
08-08-14 조회 2,476
08-08-14 조회 4,465
08-08-13 조회 3,360
08-08-12 조회 3,857
08-08-11 조회 2,627
08-08-10 조회 2,991
08-08-09 조회 2,336
08-08-08 조회 2,444
08-08-08 조회 3,020
08-08-08 조회 2,387
08-08-08 조회 5,491
08-08-07 조회 2,749
08-08-05 조회 3,175
08-08-03 조회 8,381
08-08-03 조회 2,529
08-08-02 조회 3,102
08-08-01 조회 4,450
08-07-31 조회 2,422
08-07-31 조회 3,150
08-07-31 조회 2,297
08-07-31 조회 3,001
08-07-30 조회 3,428
08-07-28 조회 4,309
08-07-25 조회 2,421
08-07-23 조회 2,504
08-07-23 조회 2,766
08-07-22 조회 2,393
08-07-22 조회 5,540
08-07-22 조회 5,133
08-07-22 조회 4,028
08-07-20 조회 2,741
08-07-19 조회 2,506
08-07-18 조회 2,790
08-07-18 조회 3,756
08-07-17 조회 2,884
08-07-15 조회 3,271
08-07-15 조회 2,464
08-07-11 조회 2,213
08-07-11 조회 2,292
08-07-10 조회 4,235
08-07-10 조회 3,697
08-07-10 조회 3,249
08-07-10 조회 3,270
08-07-10 조회 2,984
08-07-10 조회 3,438
08-07-10 조회 3,272
08-07-10 조회 3,127
08-07-08 조회 3,061
08-07-08 조회 2,326
08-07-06 조회 3,002
08-07-06 조회 3,535
08-07-05 조회 3,552
08-07-04 조회 2,919
08-07-03 조회 2,710
08-07-03 조회 2,583
08-07-02 조회 3,745
08-06-30 조회 3,819
08-06-30 조회 3,302
08-06-30 조회 3,608
08-06-28 조회 3,927
08-06-27 조회 2,476
08-06-27 조회 2,288
08-06-27 조회 7,572
08-06-27 조회 2,345
08-06-25 조회 2,782
08-06-24 조회 2,983
08-06-24 조회 2,244
08-06-23 조회 2,315
08-06-19 조회 3,100
08-06-19 조회 2,693
08-06-19 조회 4,861