我之前在html页面上textarea中排版提交到mysql后,数据库里并没有<p><br/>&nbsp;等等这些标签,现在我从数据库里读出来放到fckeditor编辑器里,通过$arr['content'] = trim(str_replace('  ','</p><p style="text-indent:2em">',$arr['content']));这句代码实现了fckeditor里面的分段,但是第一段前面也由于这样替换导致产生一个空段:<p>&nbsp;</p>,求帮忙,这个怎么去掉,我试过$arr['content'] = str_replace('<p>&nbsp;</p>','',$arr['content']);但是没反应,也试过$arr['content'] = preg_replace('/<p>&nbsp;<\/p>/','',$arr['content']);也是没反应,考虑到fckeditor可能会自动在总内容前后加<p>和</p>,所以我就再试了$arr['content'] = str_replace('&nbsp;</p>','',$arr['content']);和$arr['content'] = preg_replace('/&nbsp;<\/p>/','',$arr['content']);但是都一样没反应,各位请帮帮忙,怎么处理这问题

解决方案 »

  1.   

    $arr['content'] = preg_replace('/<p>(&nbsp;)+<\/p>/','',$arr['content']);
      

  2.   

    preg_replace输入的string和输出的string不要用同一个变量,修改如下:
    $tmpstr = preg_replace('/&nbsp;<\/p>/','',$arr['content']);
    $arr['content'] = $tmpstr;
      

  3.   

    1、经你的代码
    $arr['content'] = trim(str_replace('  ','</p><p style="text-indent:2em">',$arr['content']));
    处理后,只是在开始处多出了“</p>”和最后一个“p”标记未封闭(在html中是允许的)
    所以你只需
    $arr['content'] = preg_replace("#^</p>#", '', $arr['content']);2、既然原来是经textarea编辑的纯文本文件,那么分段应不止是段首的空格,还有段尾的换行
    所以宜写作
    $arr['content'] = preg_replace("/  (.+)/im", '<p style="text-indent:2em">$1</p>', $arr['content']);
    或直接用php函数nl2br()处理