Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вывод форматированного текста из БД
 
 автор: Alexo   (19.05.2011 в 13:08)   письмо автору
 
 

Вопрос задавался неоднократно и многие советуют использовать функции nl2br(), wordwrap(), но они не подходят мне.
Дело в том, что я хочу сделать вывод текста из БД таким образом, чтобы абзацы были оформлены в тег <p>.

Я написал такую вот функцию:

<?php
function replace($rn)
{
    
$rn str_replace("\n""<p>"$rn);
    
$rn str_replace("\r""</p>"$rn);
    return 
$rn;
}
?>


Но проблема в том, что если сделать несколько обрывов строк, то в тег <p> ничего не попадает и в исходном коде странице получается следующее:
<p></p>


Может быть есть проверенный способ вывода теста абзацами, нежели моя функция?

  Ответить  
 
 автор: cheops   (19.05.2011 в 13:13)   письмо автору
 
   для: Alexo   (19.05.2011 в 13:08)
 

Мы обычно поступаем так, разбиваем текст на отдельные строки при помощи регулярного выражения /[\r\n]+/ и функции preg_split(), а потом каждую строку в полученном массиве выводим как отдельный параграф.

  Ответить  
 
 автор: Alexo   (19.05.2011 в 14:09)   письмо автору
 
   для: cheops   (19.05.2011 в 13:13)
 

А можно вот так форматировать?
<?php
function nl2p($string) { 
    
$s = ("|\r\n|"); 
    
$d = ("</p>\n<p>"); 
    
$string "<p>"preg_replace($s$d$string) ."</p>"
    
$string str_replace('<p></p>'''$string); 
    return 
$string

?>

  Ответить  
 
 автор: cheops   (19.05.2011 в 14:16)   письмо автору
 
   для: Alexo   (19.05.2011 в 14:09)
 

Хм... ну можно вероятно, на мой взгляд код не очень прозрачный, однако, если работает, почему бы нет. Я бы еще для надежности и пустые строки удалял при помощи регулярного выражения, вставив в между <p> и </p> возможные пробельные символы.

  Ответить  
 
 автор: Alexo   (19.05.2011 в 14:37)   письмо автору
 
   для: cheops   (19.05.2011 в 14:16)
 

Спасибо за подсказку. Я между <p> и </p> вставил &nbsp;

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования