Лучший способ дезинформировать контент с помощью PHP?

Каков наилучший способ «дезинфекции» контента? Пример…

Пример. Перед дезинфекцией:

Morbi mollis ante vitae massa suscipit a tempus est pellentesque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla mattis iaculis consectetur. Morbi mollis ante vitae est pellentesque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla mattis iaculis consectetur. 

Пример – после дезинфекции:

 <p>Morbi mollis ante vitae massa suscipit a tempus est pellentesque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla mattis iaculis consectetur.</p> <p>Morbi mollis ante vitae est pellentesque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla mattis iaculis consectetur.</p> 

Что он должен делать

  • Он должен добавить p-теги вместо разрыва строки.
  • Он должен удалить пустое пространство, например, триплекс
  • Он должен удалить двойные разрывы.
  • Он должен удалить вкладки.
  • Он должен удалять разрывы строк и пробелы перед содержимым, если оно есть.
  • Он должен удалять разрывы строк и пробелы после содержимого, если таковые имеются.

Правильно знаю, что я использую функцию str_replace и это должно быть лучшим решением для этого?

Я хочу, чтобы функция выглядела так:

 function sanitize($content) { // Do the magic! return $content; } 

  • Он должен добавить p-теги вместо разрыва строки.

Запустите его через нечто вроде интерпретатора Textile или Markdown или любого другого гуманного языка разметки, который подходит вашим потребностям.

  • Он должен удалить пустое пространство, например, триплекс
  • Он должен удалить двойные разрывы.
  • Он должен удалить вкладки.
  • Он должен удалять разрывы строк и пробелы перед содержимым, если оно есть.
  • Он должен удалять разрывы строк и пробелы после содержимого, если таковые имеются.

Зачем беспокоиться? Когда HTML отображается как документ, несколько символов пробела сокращаются до одного места, нет? Большинство ваших проблем решают сами.

 function sanitize($content) { // leading white space $content = preg_replace('!^\s+!m', '', $content); // trailing white space $content = preg_replace('![ \t]+$!m', '', $content); // tabs and multiple white space $content = preg_replace('![ \t]+!', ' ', $content); // multiple newlines $content = preg_replace('![\r\n]+!', "\n", $content); // paragraphs $content = preg_replace('!(.+)!m', '<p>$1</p>', $content); // done return $content; } 

Пример:

 $s = <<<END Morbi mollis ante vitae massa suscipit a tempus est pellentesque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla mattis iaculis consectetur. Morbi mollis ante vitae est pellentesque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla mattis iaculis consectetur. END; $out = sanitize($s); 

Вывод:

 <p>Morbi mollis ante vitae massa suscipit a tempus est pellentesque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla mattis iaculis consectetur.</p> <p>Morbi mollis ante vitae est pellentesque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla mattis iaculis consectetur.</p> 

Взгляните на класс Sanitize CakePHP .

Аккуратный!!

Существует довольно устаревшая статья о zend, но посмотрите пример, который они дают:

http://devzone.zend.com/article/761