【发布时间】:2019-09-18 19:30:34
【问题描述】:
我想检查给定的字符串是否可以是有效的 HTML 属性。如果不是这种情况,我会将前缀为data- 的字符串添加到元素中。我该怎么办?
例如,当用户想要添加一个属性时,它会将其传递给$attributes 数组,如下所示:
$attr = '';
foreach ( $attributes as $key => $value ) {
if (is_attr($key)) {
$attr .= $key . '="' . $value . '" ';
} else {
$attr .= 'data-' . $key . '="' . $value . '" ';
}
}
所以这最终会被添加到一个表单元素中,比如input 或textarea 或类似的东西。
...is_attr($key) 的实现会是什么样子?
更新:
我希望我可以使用 DomDocument() 类创建属性,然后验证它以查看该属性是否受到官方支持。到目前为止没有运气。
【问题讨论】:
-
您可以查看this answer(cmets 中也有一个很好的正则表达式),也可以查看this MDN list,但请注意,文件列表可能会随着新规范而改变。另请注意,如果字符有效,您可以将任何属性设置为元素,即使不原生用作标记参数,该属性也会存在。
-
"is_attr($key) 的实现会是什么样子?" — 一开始需要多个属性。 HTML 规则包括诸如“输入元素可能具有
multiple属性,但前提是它具有type="file"。HTML 验证复杂 ...太复杂了,无法在 stackoverflow 答案中编写完整的解决方案。 (投票结束过于广泛)。