newline 또는 rn을
로 대체하려면 어떻게 해야 합니까?

단순히 몇 개의 새로운 회선을 교체하려고 하며 세 가지 다른 방법을 시도했지만 변경 사항이 없습니다.

$description = preg_replace('/r?n r/', '<br/>', $description); $description = str_replace(array("rn", "r", "n"), "<br/>", $description); $description = nl2br($description); 

이 모든 게 먹혀들겠지만 그래도 새 라인이 나오네요.“rr”은 이중입니다.그렇다고 해서 실패하는 건 아니죠?



질문에 대한 답변



삽입하는 함수가 이미 있습니다. <br>새 줄 문자 앞에 태그:

예(코드패드):

<?php // Won't work $desc = 'Line onenline two'; // Should work $desc2 = "Line onenline two";
echo nl2br($desc); echo '<br/>'; echo nl2br($desc2); ?> 

그래도 작동하지 않으면 텍스트가$desciption이중으로 되어 있습니다.

이는 작은 따옴표가 다음과 같은 이스케이프 시퀀스를 ‘확장’하지 않기 때문입니다.n이중 따옴표로 묶인 문자열과 비교합니다.PHP 문서에서 인용:

주의: 이중 따옴표 구문 및 세습 구문과 달리 특수 문자의 변수 및 이스케이프 시퀀스는 따옴표로 묶인 문자열 내에서 발생할 경우 확장되지 않습니다.




다음을 사용해 보십시오.

$description = preg_replace("/rn r n/", '<br/>', $description); 



문자열에는 실제 문자 “”를 사용할 수 있습니다(@Robik과 같이 단일 따옴표 문자열).

‘r’ 또는 ‘n’ 문자열도 교체해야 할 경우 특수문자가 아니라 ”과 ‘r’의 2개 문자 시퀀스를 말하는 것입니다.그러면 치환 문자열의 ”가 이스케이프됩니다.

str_replace(array("rn","r","n","\r","\n","\r\n"),"<br/>",$description); 



이것을 시험해 보세요.

echo str_replace(array('rn', 'nr', 'n', 'r'), '<br>', $description); 



nl2br()정상적으로 동작할 것입니다.

$description = nl2br($description); 

닫히지 않은 것이'이 문제의 원인이 되고 있는 것은,$description 뒤에 있는를 삭제합니다.

...$description');