PHP检查它是否为有效的HTML属性

时间:2019-04-30 07:23:20

标签: php html dom

我想检查给定的字符串是否可以是有效的HTML属性。如果不是这种情况,我将在元素中添加前缀为data-的字符串。我将如何处理?

例如,当用户想要添加属性时,它将像这样将其传递给$attributes数组:

    $attr = '';
    foreach ( $attributes as $key => $value ) {
        if (is_attr($key)) {
            $attr .= $key . '="' . $value . '" ';
        } else {
            $attr .= 'data-' . $key . '="' . $value . '" ';
        }
    }

因此,它将最终添加到诸如inputtextarea之类的表单元素中。

... is_attr($key)的实现看起来如何?

更新: 我希望可以使用DomDocument()类创建该属性,然后对其进行验证以查看该属性是否得到正式支持。到目前为止没有运气。

1 个答案:

答案 0 :(得分:1)

这里是is_attr函数,用于检查输入或文本区域的有效属性。

function is_attr($attr, $elementType)
{
    $input       = ["autocomplete", "autofocus", "disabled", "list", "name", "readonly", "required", "tabindex", "type", "value"];
    $globalAttrs = ["accesskey", "class", "contenteditable", "contextmenu", "dir", "draggable", "dropzone", "id", "lang", "style", "tabindex", "title", "inputmode", "is", "itemid", "itemprop", "itemref", "itemscope", "itemtype", "lang", "slot", "spellcheck", "translate"];
    $select      = ["autofocus", "disabled", "form", "multiple", "name", "required", "size"];
    $textarea    = ["autocapitalize", "autocomplete", "autofocus", "cols", "disabled", "form", "maxlength", "minlength", "name", "placeholder", "readonly", "required", "rows", "spellcheck", "wrap"];
    return (in_array($attr, $globalAttrs) || in_array($attr, $$elementType));
}
echo is_attr('accesskey','select');

我从官方html doc中获取了所有有效属性。