2013-12-30 4 views
0

Итак, я делаю раздел комментариев для своей страницы, и я пытаюсь заставить их работать правильно. Проблема заключается в том, что при сохранении комментария к БД, например, как это:Отобразить пробелы из базы данных

My comment 
    { 
    ohh 
    } 

и при отображении его как echo $comment, я получаю:

My comment { ohh } 

Так я это исправил с:

nl2br(preg_replace('/(\r)|(\n)/', '<br>', $comment->text)); 

Теперь я получаю:

My comment 
{ 
ohh 
} 

Но мне нужно отобразить первый вариант. Когда я vardie это дает мне:

string(36) "My comment 
{ 
ohh 
}" 

В db он хранит комментарий со всеми отступами.

Итак, вопрос: как правильно отображать комментарий с пробелами. А также дополнительный вопрос, как хранить эти комментарии в БД, чтобы разрешить только 4 секвенциальных пробела?, Это не имеет значения в начале или в середине.

ответ

3

Одно решение (возможно, не идеально) было бы обернуть текст в <pre></pre>, например .:

<pre><?php echo $comment; ?></pre> 
1

Вы можете конвертировать пробельные в &nbsp; перед вставкой в ​​базу данных.

$_POST['code_field'] = str_ireplace(' ' , '&nbsp;' , $_POST['code_field']); 

Если вы допускаете для редактирования комментариев затем конвертировать &nbsp; обратно в регулярные пространства.

$row['code_field'] = str_ireplace('&nbsp;' , ' ' , $row['code_field']); 
2

Другим решением (также возможно не идеальным) было бы заменить пространство неразрывным пространством HTML. Вы можете обернуть его вокруг своей «новой строки до <br>»:

str_replace(' ', '&nbsp;', preg_replace('/(\r)|(\n)/', '<br>', $comment->text)) 
Смежные вопросы