MySQL에 쓸 때 TextArea에서 줄 바꿈 유지


105

사용자가 주석을 입력 할 수 있도록 텍스트 영역을 사용하고 있습니다. 그러나 사용자가 새 줄을 입력하면 새 줄이 출력 될 때 나타나지 않습니다. 줄 바꿈을 유지하는 방법이 있습니까?

줄 바꿈을 어떻게 보존합니까?


방금 htmlawed를 비활성화했으며 줄 바꿈과 관련이없는 것 같습니다. 줄 바꿈이 여전히 표시되지 않습니다. 그래서 저는 mysql에 직접 textarea 데이터를 쓰고 있는데 mysql 데이터베이스에서 데이터를 에코 할 때 표시되지 않습니다.
Hirvesh

또한 phpmyadmin을 사용하여 mysql 테이블을 탐색하고 주석 필드를 확인했습니다. <br/> 태그가 저장되지 않았습니다.
Hirvesh

저는 페이스 북 스타일의 댓글 시스템을하고 있기 때문에 wysiwyg가되는 것을 원하지 않습니다. 줄 바꿈이 보존되지 않는 이유를 알 수 없습니까?
Hirvesh

답변:


158

이를위한 두 가지 솔루션 :

  1. PHP 기능 nl2br():

    예 :

    echo nl2br("This\r\nis\n\ra\nstring\r");
    
    // will output
    This<br />
    is<br />
    a<br />
    string<br />
  2. 입력을 <pre></pre>태그로 묶습니다 .

    참조 : W3C Wiki-HTML / Elements / pre


2
+1, 그냥이 PHP에 대한 내 즐겨 찾기에 특권 자리를 수여 nl2br():
Zuul

1
xss에서는 <pre> </ pre>를 선택하고 스타일링하는 것이 훨씬 낫다고 생각합니다.
EGurelli

38

내가 사용하는 것은 다음과 같습니다.

$textToStore = nl2br(htmlentities($inputText, ENT_QUOTES, 'UTF-8'));

$inputText양식 또는 텍스트 영역에서 제공하는 텍스트입니다. 및 $textToStore에서 반환 된 텍스트 nl2br이며 htmlentities데이터베이스에 저장됩니다. ENT_QUOTES큰 따옴표와 작은 따옴표를 모두 변환하므로 문제가 없습니다.


2
이제 UTF-8이 PHP의 기본값이라고 생각합니다. 그러나 물론 명시 적이라고해도 아프지는 않습니다.
ProfileTwist 2014 년

텍스트 사이에 공백을 삽입하는 방법은 무엇입니까?
JWC

항상 데이터베이스에 원시 데이터를 저장해야합니다. 그런 다음 데이터를 표시하기 전에 데이터를 변환하고 삭제하십시오.
Edward

3

내 대답 : 텍스트 영역의 데이터에서이 함수를 사용하면 문제가 해결됩니다.

function mynl2br($text) { 
   return strtr($text, array("\r\n" => '<br />', "\r" => '<br />', "\n" => '<br />')); 
} 

더 여기 : http://php.net/nl2br


2

나는 mysql에 저장하기 위해 textarea 에 있는 동일한 텍스트를 보존하기 위해이 두 가지 방법 단계를 사용 하고 있으며 시간이 지남에 따라 단순히 일반 텍스트를 표시 할 수도 있습니다 .....

1 단계:

$status=$_POST['status'];<br/>
$textToStore = nl2br(htmlentities($status, ENT_QUOTES, 'UTF-8'));

쿼리에서 $textToStore...를 입력하십시오 .

2 단계:

선택 쿼리에 대한 코드 작성 ... 및 직접 에코 값 ....

효과가있다


항상 데이터베이스에 원시 데이터를 저장해야합니다. 그런 다음 데이터를 표시하기 전에 데이터를 변환하고 삭제하십시오.
Edward

1

이것은 작동합니다 :

function getBreakText($t) {
    return strtr($t, array('\\r\\n' => '<br>', '\\r' => '<br>', '\\n' => '<br>'));
}

0
function breakit($t) {
    return nl2br(htmlentities($t, ENT_QUOTES, 'UTF-8'));
}

이것은 당신을 도울 수 있습니다

textarea 월마트를 통과


-8

그것이 soooo 쉬울 수 있는데 왜 make는 sooooo 어려운 사람들입니다 :)

//here is the pull from the form
$your_form_text = $_POST['your_form_text'];


//line 1 fixes the line breaks - line 2 the slashes
$your_form_text = nl2br($your_form_text);
$your_form_text = stripslashes($your_form_text);

//email away
$message = "Comments: $your_form_text";
mail("destination_email@whatever.com", "Website Form Submission", $message, $headers);

분명히 헤더가 필요하고 필드가 더 많을 가능성이 있지만 이것은 텍스트 영역입니다.


6
이것은 안전하지 않으며 질문과 관련이 없습니다.
Evan Darwin

1
시도해보세요 .... 이메일이나 SQL에 게시합니다 .... 감자 감자 ..... 줄을 실행하고 문제를 해결해보세요 .... 가끔 작동하거나 작동하지 않는 지저분한 코드 줄이 있으면 무리없이 .... :)
Duncan

모든 해답 중,이 사람은 적어도 간결
JacobRossDev
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.