当前位置: 首页 > 面试题库 >

从html标记中删除所有属性

闾丘谦
2023-03-14
问题内容

我有这个HTML代码:

<p style="padding:0px;">
<strong style="padding:0;margin:0;">hello</strong>
</p>

但它应该变成(对于所有可能的html标签):

<p>
<strong>hello</strong>
</p>

问题答案:

改编自我对类似问题的回答

$text = '<p style="padding:0px;"><strong style="padding:0;margin:0;">hello</strong></p>';

echo preg_replace("/<([a-z][a-z0-9]*)[^>]*?(\/?)>/si",'<$1$2>', $text);

// <p><strong>hello</strong></p>

RegExp细分:

/              # Start Pattern
 <             # Match '<' at beginning of tags
 (             # Start Capture Group $1 - Tag Name
  [a-z]        # Match 'a' through 'z'
  [a-z0-9]*    # Match 'a' through 'z' or '0' through '9' zero or more times
 )             # End Capture Group
 [^>]*?        # Match anything other than '>', Zero or More times, not-greedy (wont eat the /)
 (\/?)         # Capture Group $2 - '/' if it is there
 >             # Match '>'
/is            # End Pattern - Case Insensitive & Multi-line ability

添加一些引号,并使用替换文本,<$1$2>它应该删除标记名之后的所有文本,直到标记结尾/>或just 为止>

请注意, 这不一定适用于 所有 输入,因为Anti-HTML + RegExp会告诉您。有一些后备功能,最明显的是<p style=">"><p>">失败,还有其他一些坏的问题…我建议将Zend_Filter_StripTags视为PHP中更全面的标签/属性过滤器



 类似资料:
  • 问题内容: 我对正则表达式不太满意,但是对于PHP,我想从TinyMCE返回的字符串中的HTML标记中删除属性。 所以换成香草。 我将如何通过类似功能来实现这一目标? 问题答案: 务实的正则表达式将在所有合理的情况下解决此问题。不是第一个捕获组的匹配部分应删除,如下所示: 匹配一个后跟一个或多个“ not ”的字符,直到我们到达该部分为止。该更令其一起工作。将此匹配替换为,这是捕获的组。如果标记不

  • 问题内容: 我想显示数据库条目的前110个字符。到目前为止很简单: 但是上面的条目中包含由客户端输入的html代码。因此它显示: 显然没有好处。 我只想剥离所有html代码,所以我需要从数据库条目中删除<和>之间的所有内容,然后显示前100个字符。 有任何想法吗? 问题答案: 采用

  • 问题内容: 在我的数据集中,我有一个字段,用于存储用HTML标记的文本。通用格式如下: 我可以尝试通过以下方法解决问题: 但是,这不是严格的规则,因为 某些条目违反了W3C标准, 并且不包含标签。更糟的是, 可能会缺少结束标记 。因此,我需要为每个可能存在的开始和结束标记包括函数。 我想知道是否有比使用多个嵌套函数更好的方法来完成此任务。不幸的是,我在这种环境中只能使用的语言是SQL和Visual

  • 我在使用一段时间的脚本时遇到了问题,在遇到这个问题之前它一直对我有效。 我有一个脚本,我想用它从html源代码中删除所有p html标记。该脚本确实可以工作,部分原因是它只删除了一些p标记,但遗漏了一些。 我不明白为什么会这样。 脚本返回 省略了两个p标签... 你能帮我找出为什么它跳过了一些标签吗

  • 你知道在构建过程中给元素分配属性是非常有帮助和高效的。基本上,元素是一个可以分配给任何东西的对象: 在测试中,这些实际上运行良好,返回了可靠的结果; 我寻求一种方法来详细观察和操纵这些动作。 例如,我想得到一个所有赋值的对象: 以及一种删除所有的方法(仅指定了插件javascript,而不是默认值,例如,,等等)

  • 什么是正确的方法来删除只有HTML标签(保留所有自定义/未知的标签)与JSOUP(不是正则表达式)? 预期输入: 预期产出: 我尝试使用白名单清洁剂。none(),但它也会删除自定义标记。 我也尝试过: 但是它也删除了自定义标签。 这个答案对我不好,因为自定义标记的数量是无限的。