我有一个WYSIWG,我知道人们会复制并粘贴到。当我在服务器端执行操作时,我想要删除标记之间的所有内容,以便它显示{j} <p></p>
或<span></span>
。
我的测试复制/粘贴看起来像:
<p style="color: rgb(26, 26, 26); font-family: "Open Sans", Helvetica, Arial, sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400;">"<span style="font-weight: 700;">Nancy</span>"</p><p style="color: rgb(26, 26, 26); font-family: "Open Sans", Helvetica, Arial, sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400;">5 rounds for time of:<br>400 meter run<br>95 pound Overhead squat, 15 reps</p>
我看到了这个:
preg_replace('/(<[^>]+) style=".*?"/i', '$1', $input )
但它返回:
<pOpen Sans", Helvetica, Arial, sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400;">"<span>Nancy</span>"</p><pOpen Sans", Helvetica, Arial, sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400;">5 rounds for time of:<br>400 meter run<br>95 pound Overhead squat, 15 reps</p>
所以它剥离了Style:
部分,但留下了实际的样式。
答案 0 :(得分:0)
您可以尝试使用仅保留标记的正则表达式:
$input = preg_replace('~(<[a-z]+)[^>]+~', '$1', $input );
答案 1 :(得分:0)
如果您想删除完整的样式标记,这应该适合您:
preg_replace('/(<[^>]+) style=".*?"/i', '$1', $input);
但是,如果要将这些文件保存到某个数据库中,您可能需要对代码进行更多检查。
您也可以(在大多数WYSIWYG编辑器中)选择用户可以使用的功能。因此,如果您只想允许特定的html标记和属性,您应该能够设置它。
这不会在插入数据库之前替换代码检查,因为您当然可以关闭java并插入所需的内容。