正则表达式:在保存到数据库之前更改html

时间:2010-08-25 17:44:07

标签: php regex

在保存到数据库之前,我需要


  1. 删除所有代码
  2. 删除所有多个空白字符
  3. 删除所有多个换行符
  4. 为此我做了以下

    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. 并且我必须删除多个“NewLine”字样。

    4. 在前两点后我得到这种格式的文本 -

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

      如何从这样的内容中传递更多的新内容?

      由于

2 个答案:

答案 0 :(得分: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且不是非空白字符的字符)压缩到一个空格中。第二个会将多个换行符压缩到一个换行符中。

答案 1 :(得分:0)

为什么不使用nl2br()然后使用<br /><br /> preg_replace所有<br />,然后将所有<br />返回到\ n?