2010-08-25 3 views
0

Перед сохранением в базе данных мне нужнорегулярное выражение: изменение HTML перед сохранением в базе данных


  1. удалить все теги
  2. удалить все более одного пробельных символов
  3. удалить все более одного перевода строки

для этого я сделать следующее

  1. $content = preg_replace('/<[^>]+>/', "", $content);
  2. $content = preg_replace('/\n/', "NewLine", $content);it's for not to lose them when deleting more then one white space character

    $content = preg_replace('/(\&nbsp\;){1,}/', " ", $content);

    $content = preg_replace('/[\s]{2,}/', " ", $content);

  3. и finnaly я должен удалить более одного "NewLine" слов.

после первых двух точек я получить текст в таких Формат-

NewLineWordOfText 
NewLine 
NewLine 
NewLine NewLine WordOfText &quot;WordOfText WordOfText&quot; WordOfText NewLine&quot;WordOfText 
... 

как telede более один символ новой строки от такого контента?

Благодаря

+0

Вы удаляете несколько пробелов, кроме строк новой строки, и удаляете несколько строк новой строки. Почему бы не удалить несколько пробелов, включая новые строки? – Sjoerd

+0

Мне нужно сохранить новые строки !!! предположим, что у меня есть '\ n \ s'. в этом случае я получу только один '\ s', но мне нужно также сохранить' \ n'. – Simon

+0

'strip_tags()' - это гораздо более быстрый и эффективный способ удаления HTML – Cfreak

ответ

3

Прежде всего, в то время как HTML is not regular и, таким образом, это плохая идея использовать регулярные выражения, чтобы разобрать его, PHP имеет функцию, которая будет удалить тег для вас: strip_tags

выжимать пространства в то время как сохраняющие:

новой строки
$content = preg_replace('/[^\n\S]{2,}/', " ", $content); 
$content = preg_replace('/\n{2,}/', "\n", $content); 

Первая линия выжимают все пробелы, кроме \n ([^\n\S] означает, что все символы, которые не являются \n и а не символ без пробелов) в одно пространство. Второй сжимает несколько строк новой строки в одну новую строку.

+0

+1. Этот вопрос должен быть необходим, чтобы пользователи писали свой первый вопрос с тегами «html». –

+1

+1 для strip_tags. HTML не является регулярным и представляет собой боль, чтобы попытаться разобрать его. –

0

Почему вы не используете nl2br(), а затем preg_replace all <br /><br /> s только с <br />, тогда все <br /> s назад к \ n?

Смежные вопросы