Php 用于清理空的、不必要的HTML标记的Regexp
我在一个项目中使用TinyMCE(WYSIWYG)作为默认编辑器,有时它会自动添加Php 用于清理空的、不必要的HTML标记的Regexp,php,regex,replace,preg-replace,Php,Regex,Replace,Preg Replace,我在一个项目中使用TinyMCE(WYSIWYG)作为默认编辑器,有时它会自动添加,或div 我一直在搜索,但我真的找不到一个好方法来用regex清理任何空标记 我尝试使用的代码是 $pattern = "/<[^\/>]*>([\s]?)*<\/[^>]*>/"; $str = preg_replace($pattern, '', $str); $pattern=“/]*>([\s]?)*]*>/”; $str=preg_replace($pattern
,或div
我一直在搜索,但我真的找不到一个好方法来用regex清理任何空标记
我尝试使用的代码是
$pattern = "/<[^\/>]*>([\s]?)*<\/[^>]*>/";
$str = preg_replace($pattern, '', $str);
$pattern=“/]*>([\s]?)*]*>/”;
$str=preg_replace($pattern,,$str);
注意:我还想清除:(尝试
/(\s|)*/
取而代之的是:这个regexp有点奇怪,但看起来它可能会工作。您可以尝试以下方法:
$pattern = ':<[^/>]*>\s*</[^>]*>:';
$str = preg_replace($pattern, '', $str);
$pattern=':]*>\s*]*>:';
$str=preg_replace($pattern,,$str);
不过非常相似。我知道这不是你直接要求的,但经过几个月的反复思考,不仅要解决这一问题,还要解决用户直接从Word发帖所带来的问题,我已经切换到了,而且我再也高兴不过了
编辑:以防不清楚,我想说的是,FCKeditor不会在它喜欢的地方插入任意的段落,加上处理粘贴的单词垃圾。您可能会发现我的帮助。您需要多个正则表达式,以确保不会用一个泛型正则表达式消除其他需要的元素
正如Ben所说,您可以使用一个通用正则表达式删除有效元素
<\s*[^>]*>\s*` `\s*<\s*[^>]*>
<\s*p\s*>\s*<\s*/p\s*>
<\s*div\s*>\s*<\s*/div\s*>
]*>\s*`\s*]*>
\*
\*
试试这个:
<([\w]+)[^>]*?>(\s| )*<\/\1>
]*?>(\s |)*
删除空白可能不是一个好主意。您可能不希望“Hello world”变成“Helloworld”。然后,您会替换preg_replace()的第二个参数中的空格吗?您可以使用\2(或$2,我忘记了PHP中的语法)在标记之间插入空格。不需要多个正则表达式,只需执行/(\s|)*/即可。添加适当的标记名。