2012-11-30 4 views
3

사용자가 제출하는 양식에 textarea 필드가 있고이 텍스트 필드가 MySQL 데이터베이스에 저장됩니다. 값을 검색 할 때 nl2br을 실행하여 줄 바꿈을 br 태그로 변환합니다. 그런 다음 str_replace를 사용하여 이중 br를 p 태그로 대체합니다. 문제는 대체되는 것이 아닙니다. 나는 이것에 대해 여러 번 살펴 봤는데 무엇이 잘못 될 수 있는지 알 수 없다.br 태그가 작동하지 않는 str_replace

다음은 HTML 출력입니다 :

Windows XP Home/Professional 
<br />(32 and 64 bit) 
<br /> 
<br />Test Operating System 2 
<br />(32 and 64 bit) 
<br /> 
<br />Test Operating System 3 
<br />(64 bit) 

가 여기 내 PHP의 :

$FORMATTED = str_replace("<br /><br />", "</p><p>", $SUPPORTED_PLATFORMS); 

$ FORMATTED의 출력은 정확히 위의 HTML 출력과 동일 보인다. 필자는 p 태그로 모든 back to back br 태그를 대체하고 모든 단일 br 태그를 원래 그대로 유지하려고합니다.

감사합니다.

+3

이 있습니다. 브라우저의 렌더링 된 뷰에 표시되는 것을 신뢰하지 마십시오. 그것은 당신에게 거짓말을 할 것입니다. 언제나 먼저'view source'를 먼저 체크하고, 텍스트를 캡쳐하여 16 진수 편집기를 통해 실행하여 문자열에있는 것을 정확하게 봅니다. –

+0

연속적인'br' 태그를 바꾸려면 정규 표현식을 사용해야합니다. 'preg_replace ('/ \ s * ', '

', $ SUPPORTED_PLATFORMS);'\ s'는 공백 문자 – jaudette

+0

을 대체합니다. @MarcB. 내가 게시 한 HTML은 혼동스러워하는 뷰 소스에서 가져온 것입니다. 그래서 str_replace에있는 br 사이에 \ r \ n을 추가하는 것만 큼 쉽습니까? 나는 지금 그것을 시도 할 수있다. ... – Jason

답변

1

<br /><br /> 문자열을 바꾸려고하지만이 문자열이 원본에 없습니다. "
\ r \ n
"또는 "html"출력에있는 <br />\n<br /> 또는 <br />\r\n<br />

+0

감사합니다. Jakub! 그 트릭을 했어 - 교체 '
\ r
'로 변경하고 완벽하게 작동하고있어! – Jason

관련 문제