단순히 몇 개의 새로운 회선을 교체하려고 하며 세 가지 다른 방법을 시도했지만 변경 사항이 없습니다.
$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');