基于html语法文档和在验证器的试验和误差,我认为在HTML属性名称中允许使用以下字符:
现在,有人使用这样的字符可能看起来很疯狂,但实际上确实有效,尽管CSS似乎无法验证转义或未转义。
如何在PHP中实现这一点?清洁程序员应该如何编写代码以允许特殊的阿尔法字符?这是否可以通过regexp实现?为什么
- 字母数字
- 连字符
- 下划线
- 句点
<p data-éxample>
<p data-1.5>
我想写一个函数来清理属性名称:
<?php
function sanitize_attr_name ( $name ) {
return is_string($name) ? preg_replace( '/[^\w\-\.]/', '', $name ) : '';
}
这个方法可以处理一般字符,但是对于特殊的alpha字符会出现问题:
sanitize_attr_name( 'data-éxample' ); // 'data-xample'
现在,有人使用这样的字符可能看起来很疯狂,但实际上确实有效,尽管CSS似乎无法验证转义或未转义。
如何在PHP中实现这一点?清洁程序员应该如何编写代码以允许特殊的阿尔法字符?这是否可以通过regexp实现?为什么
ctype_graph('é')
是false?
[^A-Za-z0-9_\-\.]
? - pogoé
。我很好奇是否有可能通过正则表达式或其他方式来白名单/定位特殊的字母字符。 - ryanve\w
替换为\p{L}
。PHP 的 PCRE Unicode 文档 - Martin Ender