2014-11-26 1 views
0

내 db (mysql)에서 오는 텍스트가 있습니다. 이 텍스트는 통해 저장되며 사용자가 입력 한 줄 바꿈을 유지하기 위해 nl2br 함수를 사용합니다.DB에서 <br />을 (를) PHP의 DIV와 바꾸기

문제는 내가 각 단락을 DIV로 만들고 싶기 때문에 (여기에 당신이 가지고있는 것처럼 : http://opendyslexic.org/try-it/) 호버링을위한 CSS 클래스를 유지할 수있을 것입니다.

나는이 방법을 시도했다 :

$text = preg_replace('#<br \/>{1}(.*?)<br \/>{1}#', '<div class = "paragraph_edit">$1</div>', $text); 

을하지만 작동하는 것 같다하지 않습니다.

제안 사항?

+0

내 생각에 '
' 태그는 문자열에서 새 줄을 시작합니다. 일반적으로'.'는 개행과 일치하지 않습니다. 도트를 개행 문자에 매치시키고 싶다면, 정규 표현식에's' 플래그를 추가해야합니다. 편집 : 또한'{1}'은 (는) 앞의 문자에만 적용됩니다 (이 경우'<'). '(? :
) {1}' – Martie

답변

2

라인 엔딩을 저장해야하는 경우 왜 nl2br을 데이터베이스에 저장하기 전에 모든 것을 사용하고 있습니까? 데이터에는 이미 거기에 줄 끝이 있으며 데이터베이스에 잘 저장 될 수 있으므로 매우 이상한 일입니다. 그냥 \n과 함께 저장하고 그 안에 \n과 함께 DB에서 가져온 다음 \n에서 폭발하고 "필요한 것이 무엇이든"- implode("<br>",data) 일 수 있으며 "<div>" . implode("</div><div>",data) . "</div>" 일 수 있습니다.

또한 최신 HTML 메모에서 <br>의 HTML5 구문은 바로 그 것입니다. Void 요소는 자동으로 닫히지 않으므로 nl2br 패키지가 나쁜 HTML (또는 최신 브라우저 세계에서 사용하는 데 많은 의미가없는 XHTML)을 생성하고있는 것처럼 보입니다.

+2

'nl2br'은'false'를 넘겨 주면 XHTML 대신에 HTML 태그를 생성합니다.'
'전체와 일치 시키려면' 두 번째 매개 변수. (http://php.net/manual/en/function.nl2br.php) –

+0

데이터를 nl2br로 저장하지 않습니다. 이 텍스트를 가져온 후에 온다. – Amitay

+0

그러면'nl2br'이 필요 없습니다. '$ shaped = "

" . implode("
", explore("\n", $fromdb)) . "
";'을 사용하면됩니다. divs 클래스를주는 보너스 포인트는 적절하게 스타일 지정 될 수 있으며 querySelector'd는 –

관련 문제