2012-04-26 5 views
1

사용자가 텍스트 영역에 메모를 입력 할 수있는 응용 프로그램을 구축 중입니다. 노트는 데이터베이스에 입력 될 때 인코딩됩니다. 반환 된 값을 디코딩하면 nl2br 함수가 작동하지 않습니다. \ r \ n을 br 태그로 대체하지 않습니다. 텍스트를 인코딩/디코딩하지 않으면 작동합니다.출력 r n - PHP

나는/인코딩 내 정보를 디코딩하려면 다음 코드를 사용하고 있습니다 : http://www.myphpscripts.net/tutorial.php?id=9 나는 텍스트 영역에 입력하면

:

Hello 
World 

그것을 인코딩하고 디코딩 할 때 반환

Hello\r\nWorld. 

str_replace를 할 수 있지만 브라우저에 따라 이해할 수 있도록 \ r \ n 대신 \ n 또는 \ r을 사용할 수 있습니다.

좋은 해결책이 무엇인지 모르겠지만 ... 도와주세요! 고맙습니다!

+2

데이터베이스에 저장할 때 텍스트를 인코딩 할 필요가? – ianbarker

+0

이 튜토리얼의 코드는 개행 문자를''\ r \ n ''으로 변환하지 않습니다. –

+0

ianbarker : 노트에 개인 데이터가 들어 있습니다. 보안을 위해 반드시 준수해야합니다. – steeped

답변

3

변환하려는 텍스트가 "< 텍스트 영역 >"인 경우 "< br/>"을 사용하지 마십시오. 텍스트를 변환하는 경우

은 ...

stri_replace("\r\n","\n",$db_string);//or something similar 

텍스트를 변환하는 경우가 텍스트 영역, 사용 외부에 배치 할 ... 텍스트 영역, 사용에 배치 할

stri_replace(array("\r\n","\n","\r"),'<br />',$db_string); 

별도의 브라우저는 무엇이든 사용하지만, 모두 "\ n"을 읽을 수 있다고 생각합니다. 그러나 사이드 노트에서 운영 체제는 "\ r \ n"vs "\ n"을 결정합니다. 그냥 "\ n"을 사용하십시오. 그래서 "\ r \ n"을 "\ n"으로 대체하십시오. 또는 "\ r \ n", 중 하나만 사용하십시오. 텍스트 태그에 br 태그를 넣지 않는 한 모두 설정됩니다.

맥 = 리눅스 = \ n 윈도우 = \ 연구 \ n

+0

감사합니다 !!!!!! – steeped

-1

stripslashes($text)을 사용하여이를 제거 할 수 있습니다. 그러나 왜 슬래시가 추가되는지 알아 보는 것이 좋습니다. addslashes을 사용하고 있습니까?

+0

이것은 대답이 전혀 없습니다 – Starx

+0

addslashes를 사용하지 않습니다. Enter 키를 누르고 텍스트 영역 내에서 새 행으로 이동하면 자동으로 \ r \ n이 추가됩니다. – steeped

+0

예,하지만 브라우저는 "\ r \ n"대신 실제 \ r \ n 문자로 보내줍니다. 서버의 마지막에있는 것들은'addslashes' 또는 "magic quotes"가 될 수도 있습니다. –

0

zend studio 7.2.0을 사용하여 Windows 운영 체제에서 디코딩 된 문자열 Hello\r\nWorld.을 확인했습니다. 두 경우 모두 nl2br()이 잘 작동 함을 발견했습니다 \r\n and \n. 디코딩 된 문자열을 다시 확인해야합니다. 그것을 인코딩하기 전에 addslashes()를하고있을 수 있습니다. 그렇다면 nl2br()을 사용하기 전에 stripslashes()를 사용해야합니다.

+0

stripslashes는 Hello \ r \ nWorld가 HellornWorld가됩니다. – steeped

+0

나는 세계 – Dev