XHTML 1.0을 유효하게 유지하면서 Textarea 필드에서 라인 브레이크를 추가 할 수 있습니까?
-
09-09-2019 - |
문제
편집하다: 내 게시물을 다시 읽은 후 나는 문제가 무엇인지 조금 불분명하다고 생각합니다. 다시 제가 다시 시도하겠습니다.
사용자는 양식의 TextArea 필드를 사용하여 내 사이트에 의견을 남길 수 있습니다. 주석에 라인 브레이크를 추가 할 수 있어야합니다. <br />
. 그런 다음 주석은 MySQL-Database (안전하기 위해 탈출)에 문자열로 저장되고 나중에 데이터베이스에서 검색되어 사이트에 표시됩니다. 주석이 표시되면 일반 라인 브레이크가 인식되지 않습니다.
사용자는 자신의 의견을 편집 할 수 있으며,이 경우 원본 주석이 TextArea 필드에 표시 될 수정됩니다 (아래 이미지 참조). 문제는 어떤 것이 있다면 <br />
현재, 코드는 XHTML 1.0으로 유효하지 않습니다 (아래 오류 메시지 참조).
다른 유형의 라인 브레이크를 사용하여 코드를 유효하게 만들 수 있습니까? 주석에 명시된 바와 같이, XML : Space = "Preserve"와 함께 정기적 인 라인 브레이크가 작동하지 않습니다 (Textarea 필드에는 줄 브레이크가 표시되지만 주석이 사이트의 일반 텍스트로 표시 될 때는 그렇지 않습니다).
원래 질문 :
댓글을 남기기위한 TextArea 필드가 포함 된 웹 형식이 있으며 사용 사용 라인 브레이크를 추가 할 수 있기를 원합니다. <br />
. 아래는 간단한 예입니다.
(원천: Shipit.se)
의도 된대로 작동하지만 W3C 유효성 검사 서비스를 사용할 때 XHTML 1.0 과도기로 유효성이 없습니다. 이것은 내가 얻는 오류입니다.
- 오류 줄 90, 열 1587 : 문서 유형은 여기에서 요소 "br"을 허용하지 않습니다.
…ription" rows="0" cols="0">Test<br />line break</textarea></dd><dt class="cha
위에서 지명 된 요소는 허용되지 않는 상황에서 발견되었습니다. 이는 내부 "헤드"대신 "바디"섹션의 "스타일"요소와 같은 중첩 요소 또는 겹치는 두 가지 요소 (허용되지 않음)를 잘못 중첩 한 요소를 의미 할 수 있습니다.
이 오류의 일반적인 원인 중 하나는 HTML 문서에서 XHTML 구문을 사용하기 때문입니다. HTML의 암시 적으로 폐쇄 된 요소 규칙으로 인해이 오류로 인해 계단식 효과가 발생할 수 있습니다. 예를 들어, HTML 문서의 "헤드"섹션에서 "메타"및 "링크"에 대한 XHTML의 "자체 폐쇄"태그를 사용하면 구문 분석기가 "헤드"섹션의 끝과 "본문의 시작을 유추 할 수 있습니다. "섹션 ("링크 "및"메타 "가 허용되지 않으며보고 된 오류).
라인이 유효한 코드를 유효한 코드로 만들 수있는 방법이 있습니까, 아니면 해결 방법을 찾아야합니까 (예 : Textarea 필드에서 라인 브레이크에 특정 태그를 사용한 다음 대체하는 것과 같은 방법이 있습니까? <br />
나중에 주석을 표시 할 때)?
해결책
로부터 DTD:
<!ELEMENT TEXTAREA - - (#PCDATA) -- multi-line text field -->
귀하의 페이지의 XHTML 코드에서 a <textarea>
텍스트 만 포함 할 수 있습니다 (#PCDATA
), 그리고 당신은 <textarea>
.
당신의 질문은 두 가지 다른 것을 보여주는 것 같습니다. 이미지가 "<br />
"a <textarea>
, W3C Validator의 메시지가 <br />
페이지 내에서 귀하의 페이지의 XHTML에 작성된 요소 <textarea>
요소.
첫 번째 경우에는 "Test<br />line break
"텍스트 영역의 사용자에게 나타나는 것은 적절한 엔티티를 사용하여 수행됩니다. Altcognito 썼다 :
<textarea>Test<br />line break</textarea>
사용자가 입력 한 모든 것은 <textarea>
새 페이지에서 인코딩해야합니다 (즉, 엔티티를 사용하십시오. &
, "
, '
, <
, 그리고 >
).
사용자의 항목을 표시하려면 :
테스트
<br />
줄 바꿈
...처럼...
테스트
줄 바꿈
... 다른 텍스트 영역 내에서 원본에 입력 한 것을 구문 분석해야합니다. <textarea>
그리고 사용자 입력을 교체하십시오 <br />
정상적인 선이 끊어진 s. Lucero의 대답을 참조하십시오.
다른 팁
추가 해 보셨습니까? xml:space="preserve"
속성과 일반 정상 선 파단 만 사용합니까?
일반 라인 브레이크를 사용하지 않는 이유는 무엇입니까? 그게 잘 작동합니다.
네가 원한다면 <br />
나타나려면 해당 엔티티를 인코딩해야합니다.
<br />
나는 방금 이것을했다.
<textarea name="contenidoMensaje" id="contenidoMensaje" cols="80" rows="10">
-----Mensaje Original-----
{blank space}
<?php echo str_replace("<br />", "\n", $contenidoMensaje); ?>
</textarea>