2012-03-31 2 views
1

사용자가 일반 텍스트 또는 HTML을 입력 할 수 있도록 허용하는 textarea 필드가 있습니다.PHP는 이중 줄 바꿈을 대체합니다. <br>

나는 HTMLPurify를 사용하여 HTML을 청소하지만 사용자가 누구 HTML을 모르는 (따라서 일반 텍스트를 사용)하는 데 도움이되는 기능을 추가 할 :로 두 배 줄 바꿈 (\n\n, \r\r, \n\r, \r\n를) 변환 a <br>. 이중 줄 바꿈 2 쌍의가있는 경우, 기본적으로

등, 2 명 <br>의로 돌려 :

Hi, this is some text with a SINGLE linebreak after it. 
Here's some more text. 

This is some text following a double line break. 

이로 바뀝니다 :

Hi, this is some text with a SINGLE linebreak after it.Here's some more text. 
This is some text following a double line break. 

nl2br()를 사용한다는 점에서 문제가 발생 예를 들어 HTML을 사용하여 어렵게 만들었습니다.

<ul> 
<li>List item</li> 
<li>List item</li> 
<li>List item</li> 
</ul> 

차례가되었습니다. 이 안 될 때 여분의 총알 포인트를있을 발생

<ul> 

<li>List item</li> 

<li>List item</li> 

<li>List item</li> 

</ul> 

에 에드.

+0

. 나는 또한 preg_replace를 사용하여 시도했는데,
(연속 3, 4, 5, 6 줄 바꿈이 모두
으로 바뀌 었음)로 연속 줄 바꿈을 바 꾸었습니다. – fruitcup

+0

사용자가있을 때이를 감지 할 수 있습니까? HTML과 일반 텍스트를 사용합니까? ckEditor 또는 TinyMce와 같은 RTE 위젯을 사용하는 것에 대해 생각해 보셨습니까? http://ckeditor.com/ –

+0

흠 "HTML 모드"또는 무언가를 사용할 수있는 확인란이 있다고 가정 해 보겠습니다. – fruitcup

답변

0

한참 전에 해결책을 찾았으니 지금 내 질문에 대답하고 있습니다. HTMLPurify는 '자동 문단'

AutoFormat.AutoParagraph하는 옵션이

내가 nl2br 나를 위해 작동하지 않을 이유에 대한 정보와 내 질문에 업데이 트했습니다
0

시도 nl2br().

nl2br - HTML 삽입 라인은 '< BR />'또는 '< BR>'삽입하여 문자열의 모든 줄 바꿈 앞에

반환 문자열을 나누기 모든 줄 바꿈 (전 \ 연구 \ n을 \ n \ r, \ n 및 \ r).

1

HTMLPurify 일 수도 있고 strip_tags()를 시도하고 nl2br()을 사용하여 문제가 발생한 HTMLPurify 일 경우 nl2br()을 사용하십시오.

HTMLPurify를 사용하기 전에 nl2br()을 시도해 볼 수 있습니다. 그러면 HTMLPurify 전에 <br />으로 모든 \n\r을 변환하고 <br />을 추가했을 것입니다.

관련 문제