根据验证器中的html 语法文档和反复试验,我认为 HTML 属性名称中允许的字符是:
- 字母数字
- 连字符
- 下划线
- 时期
例如这些验证:
<p data-éxample>
<p data-1.5>
我想编写一个用于清理属性名称的函数:
<?php
function sanitize_attr_name ( $name ) {
return is_string($name) ? preg_replace( '/[^\w\-\.]/', '', $name ) : '';
}
除了特殊的字母字符外,这有效:
sanitize_attr_name( 'data-éxample' ); // 'data-xample'
现在有人使用这样的字符可能看起来很疯狂,但实际上它确实有效,尽管 css 似乎没有验证是否已转义。
你如何在 PHP 中实现这一点?如何编写消毒剂以允许特殊的字母字符?这可能通过正则表达式吗?为什么是ctype_graph('é')
假的?