사용자가 데이터베이스에 기사를 제출할 수 있도록 시스템을 설정했습니다. HTML이기 때문에 개행이있을 때마다 <br />
을 입력 할 것을 기대하고 싶지 않으므로 입력에 PHP 함수 nl2br()
을 사용하고 있습니다.PHP에서 제출 된 텍스트의 개행 문자 변환
또한 기사 수정 도구를 제공하고 있습니다.이 도구는 기사를 다시 양식으로 가져오고 (다른 페이지이지만) 편집 할 수있게합니다. 이렇게하면 <br />
요소도 나타납니다 (줄 바꿈이 여전히 있음).
요소를 수정하려면 (어쨌든 내가 예상 했었지만)이 사이트의 다른 질문에서 찾은 preg_replace('/<br(\s+)?\/?>/i', "\n", mysql_result($result,$i,"content"))
을 추가했습니다. <br />
요소를 제거하는 일을하지만, 줄 바꿈으로 바뀌므로 줄 바꾸기가 원래대로 유지되므로 게시물을 편집 할 때마다 더 많은 줄 바꿈이 추가되어 단락이 점점 더 간격을 띄웁니다 매번. 이것은 사용자가 이해하지 못하는 것입니다. 예를 들어
Hello, this is my article.
I am demonstrating a new line here.
이 변환됩니다에 : 개행 문자가, 전환에도 불구하고 있음을
Hello, this is my article.<br />
I am demonstrating a new line here.
공지 사항 본문의 개행 문자입니다. 편집 형태에서, <br />
는 개행 문자로 다시 변환됩니다와 같이 다음 <br />
가 개행 문자로 변환 된
Hello, this is my article.
I am demonstrating a new line here.
때문에,하지만 줄 바꿈이 이미 있었다.
내가 궁금하네요Hello, this is my article.<br />I am demonstrating a new line here.
... 원래 줄 바꿈을 유지에서 nl2br()
기능을 중지하는 방법이 : 그래서 나는 원래 이런 식으로 뭔가로 변환 할 수 있도록 내가 무엇을 기대하고있어 것 같아요? Windows \r\n
문자와 관련이 있을까요?
사용자가 HTML을 신뢰할 수 있고 신뢰할만한 사람이 아니라면 심각한 문제가 될 것입니다. 왜냐하면 사람들이 웹 사이트에 HTML을 업로드하도록 허용한다면, 대부분 필터링되지 않기 때문에, XSS의 구멍이 넓어지고 사회 공학 엔트리 포인트가 생겨날 수 있기 때문입니다. – tdammers
왜 기사를 처음 제출할 때 새 줄을
으로 변환해야합니까? 기사를 표시 할 때 서식을 지정할 수 있습니다. –
@tdammers 지금 필터링하지 않는 유일한 이유는 다음을 넣을 수 있기 때문입니다. '
'및' ' 내가 그 필터를 넣을 수만 있다면 , 그리고 아무것도, 내 사이트에 HTML을 제출하는 것이 환영하지 않는다는 것에 매우 동의함에 따라 기꺼이 그렇게 할 것입니다. 기사를 제출할 수있는 사람은 초대 전용 등록 절차로 제한되지만 그럼에도 불구하고 여전히 기회가 주어지면 해결할 수있는 내용이 있음을 언급해야합니다. – muttley91