2012-03-31 19 views
1

PHP를 사용하여 양식을 쓰고 있습니다. 양식에 텍스트 영역이 있고 데이터가 $_POST을 사용하여 스크립트로 전송됩니다. db에 저장됩니다. 문제는 텍스트 상자가 채워지고 사용자가 Enter 키를 눌러 새 줄 바꿈을하지 않지만 텍스트 영역의 너비가 끝날 때까지 기다렸다가 db에 저장된 텍스트가 모두 한 줄로 표시된다는 것입니다 그 경우 wrotes :텍스트 영역의 줄 바꿈

는 HELLO THIS 텍스트이며 입력란 (BR 없음 없음/N) XTAREA의 TE < = 단부 OF ALL 폭을 커버한다.

텍스트 상자의 최대 너비에 도달하면 텍스트가 새로운 줄에 표시됩니다. 나는 (내 사이트 레이아웃을 나사) 결과가 모두 한 줄에있는 쿼리

이 코드를 사용하여 스트로크를 입력 기록 사용자에게 관리가 함께 메시지를 인쇄 할 때 :

$cleaned_message=str_replace(Chr(13),'<br>', $cleaned_message); 

하지만 난을 그가 ENTER KEY를 사용하지 않으면 어떻게해야할지 알 수 없습니다.

답변

1

게시물의 첫 번째 부분에서 설명하는 내용은 정상적으로 올바르게 작동합니다. 텍스트는 텍스트 영역에 싸여 있으며 사용자가 입력하지 않으면 한 줄로 해석됩니다. 텍스트 영역이 아닌 새로운 행을 원하는 위치를 지정하는 것은 사용자입니다.

대부분의 경우 레이아웃이 잘못되었습니다. 출력 요소의 너비를 정의하려고합니다 (이 또한 텍스트 영역이라고 생각합니다). 결과는 출력에 조정 된 요소가 아니라 요소로 래핑됩니다.

결과가 인쇄되는 레이아웃의 일부로 게시물을 업데이트 할 수 있습니까?

+0

감사합니다. – user1084304

1

사용자가 Enter 키를 사용하지 않으면 (예 : 줄 바꿈이있는 텍스트를 복사하여 붙여 넣기 등) 줄 바꿈을 삽입하지 않으면 DOM에 저장된대로 실제 줄 바꿈이 없습니다. 양식 데이터에 제출 된대로 브라우저는 필요에 따라 텍스트를 여러 줄로 나누어 적합하게 만들었지 만 줄 바꿈은 시각적으로 렌더링하는 "부드러운"텍스트입니다.

사용자가 입력 한 줄 바꿈은 CR, LF 쌍 (캐리지 리턴, 줄 바꿈)으로 전송됩니다. 기본 양식 데이터 인코딩에서는 %0D%0A을 의미합니다. 당신이 그들과하는 일은 문맥에 달려 있습니다. 줄 바꿈은 단락이나 내용이 중요한 줄 바꿈 (예 : 우편 주소,시 및 컴퓨터 코드)으로 유지되거나 해석되거나 공백으로 바뀔 수 있습니다.

브라우저에서 생성 된 줄 바꿈은 서버에 도달하지 않으므로 서버 쪽에서 처리 할 필요가 없습니다.

그러나 textarea 요소에 (비표준) 특성 wrap=hard이 있으면 브라우저에서 생성 된 줄 바꿈이 실제 줄 바꿈이되며 사용자가 입력 한 줄 바꿈과 구별되지 않습니다. 속성 wrap=off은 자동 배치를 방지합니다. 선은 임의로 길 수 있으며 필요에 따라 가로 스크롤이 나타납니다.

+0

감사합니다. 물리적 인 CSS 작업으로 수정되었습니다. – user1084304