1

当您按两次 Enter 时,TinyMCE 会创建空段落标签。喜欢:

<p> </p>

哪个是 <p>SPACE</p>

在 FireBug 中,它将此空间称为 a "&nbsp;",但 html 代码/数据库后端仅显示一个空间。当我这样做时"str_replace('<p> </p>'.....",它没有找到块......基本上我认为“空间”在某种程度上不是标准空间和某种编码空间。有没有我可以运行的正则表达式来删除这个标签?我已经坚持了几个小时......甚至类似的东西

regex('<p>LESS THAN THREE CHARS</p>'...)

可能会工作

谢谢

4

5 回答 5

6

我会使用:

$str = preg_replace('~<p>\s*<\/p>~i','',$str);

where\s表示任何类型的空白(制表符、空格等),并*表示此(空格)出现 0 次或多次。所以<p></p>, <p> </p>,<p>{multiple spaces here}</p>都将被一个空字符串替换。附加i标志用于不区分大小写,以防万一<p>'s 可能改为<P>'s。

于 2012-07-20T03:00:20.503 回答
2
$text = preg_replace('#<p>&nbsp;</p>#i','<p></p>', $text);

为我工作,因为变量包含实际字符串"&nbsp;"而不是不间断空格 unicode 字符。因此,既不#<p>.</p>#i工作也不从字符映射复制不间断空格字符。

于 2012-09-18T14:30:45.617 回答
0

没有一个给定的答案对我有用,但这就是:

$str = str_replace('&lt;p&gt;&nbsp;&lt;/p&gt;', '', $str);

绝对不是最正确的做事方式。但是,如果您正在使用(反对)TinyMCE,特别是在 SuiteCRM 内部,这应该会有所帮助。

于 2017-07-27T14:21:56.847 回答
0

如果<p>tag 有任何内联属性,例如 <p style="font-weight:bold">.

这是一个正则表达式来捕捉它:

#<p[^>]*>(\s|&nbsp;|</?\s?br\s?/?>)*</?p>#
于 2016-01-01T14:04:43.927 回答
-1

尝试这个

$string="a bunch of text with <p> </p> in it";

$string=str_replace("/<p> <\/p>/","",$string);

请注意几件事:要匹配的字符串之前和之后的正斜杠,以及第二个段落标记中正斜杠之前的转义反斜杠。

于 2012-07-20T02:59:09.737 回答