2011-03-07 3 views
3

양식 제출시 admin에서 textarea를 통해 데이터베이스에 저장된 제품 설명 값을 검색하고 있습니다. 데이터베이스에서 설명을 선택하면 $description = $row['description'];이되고 기본 페이지에서 $ description를 이렇게 되풀이합니다. echo nl2br($description);하지만 새 행을 만드는 대신 "\r\n" 문자가 표시됩니다. 내가 여기 인터넷에서 발견 한 바로는, 당신의 문자열은 다음과 같이 따옴표 사이에 사용해야합니다nl2br()을 사용하여 ' r n'인 문자열을 처리하는 방법은 무엇입니까?

echo nl2br("Hello, \r\n This is the description"); 

지금, 데이터베이스에서 $description의 값이 사실 "Hello, \r\n This is the description"에 있지만 내 스크립트에서 I가있다 이처럼 사용

echo nl2br($description); 

대신 \r\n을하고 출력하기되고, BR 년대를하지 않는. 그래서, 내가 할 수있는 일은, 나는 여기에서 큰 따옴표를 사용할 수 없다. 나의 경험에서.

+0

'\\ r \\ n'과 같이 이스케이프 처리 된 백 슬래시와 함께 저장됩니까? 'nl2br()'은 변수에 문제없이 작동해야합니다. –

답변

6

당신 다음과 같이 nl2br()를 통해 문자열을 전달하기 전에 각각의 이스케이프 시퀀스로 변환 할 수 :

$description = nl2br(str_replace('\\r\\n', "\r\n", $description)); 

그러나 문자 그대로 무엇인가 데이터베이스에서 처음부터 이스케이프 처리합니까?

+0

새로운 라인을 그대로 유지하기 위해 데이터베이스 삽입시 $ _POST [ 'description']을 어떻게 처리해야합니까? 감사. –

+0

@Manny Calavera : 아직 텍스트 영역을 사용하고 있지 않다면이를 사용해야합니다. '\ r \ n'이 항상 진짜 개행이되도록하려면, 삽입하기 전에'str_replace()'를 간단하게 실행할 수 있습니다. 따라서 가져온 후에 할 필요가 없습니다. – BoltClock

1

실제 문자가 아닌 \r\n의 리터럴 값을 데이터베이스에 저장합니다.

데이터베이스에서 확인하십시오. 설명 입력란에 \r\n이 표시되면 데이터를 저장할 때 백 슬래시를 벗어날 수 있습니다. 텍스트가 \, r, \n 및 포함되지 않은 실제 개행 문자를 개별 문자가 포함처럼

0

는 것 같습니다. 따라서, str_replace()는 작업이 완수해야

echo str_replace('\r\n', '<br>', $description); 
-2

nl2br은 \r\n<br>으로 변환하는 "is_xhtml"에 대해 두 번째 (선택 사항) 인수를 사용할 수 있습니다.

echo nl2br($description, TRUE); 
+3

이것이 문제를 해결할 것이라고 생각하지 않습니다. – alex

+0

선택적 인수는 기본적으로 true입니다. – Adam

관련 문제