提问人:Jori 提问时间:8/10/2014 更新时间:12/16/2021 访问量:728
ctype_print() UTF-8字符的最佳解决方案
ctype_print() best solution for UTF-8 characters
问:
在 PHP 中,让(或者这是不可能的)使用 UTF-8 的最佳方法是什么?目前,当我将它与一些 UTF-8 字符一起使用时,它会失败,例如:ctype_print()
ctype_print("Curaçao");
(在荷兰独立岛库拉索岛之后)返回.false
提前感谢您的时间和帮助。
答:
0赞
cetver
12/12/2021
#1
这些函数仅使用 ASCII 符号:ctype_print
使用正则表达式
function ctype_print_utf(string $string): bool
{
return preg_match('/[[:cntrl:]]/', $string) === 0;
}
0赞
Dmitry Leiko
12/12/2021
#2
您可以尝试在下面使用代码:
function ctype_print_unicode($input) {
return preg_match("~^[\pL\pN\s\"\~". preg_quote("!#$%&'()*+,-./:;<=>?@[\]^_`{|}´") ."]+$~u", $input);
}
print ctype_print_unicode('Curaçao');
输出:
1
评论
0赞
Petah
12/14/2021
3v4l.org/bGbMl
0赞
Markus AO
12/16/2021
#3
有一个 PCRE/POSIX 正则表达式字符类,它与任何可打印字符(引用)匹配。当与修饰符一起使用时,它将匹配任何 UTF-8 可打印字符:u
[:p rint:]这将匹配与 [:graph:] 相同的字符以及非控件的空格字符,即具有 Zs 属性的字符。
如果您只对字形感兴趣,并且空格算作禁忌,则可以使用:
[:图形:]这将匹配具有在打印时标记页面的字形的字符。在 Unicode 属性术语中,它将所有字符与 L、M、N、P、S 或 Cf 属性匹配
然后,您的正则表达式将如下所示:
preg_match('~^[[:print:]]+$~u', $string)
一个可能的函数如下所示:
function is_utf8_printable($string): bool {
return (bool) preg_match('~^[[:print:]]+$~u', $string);
}
这将告诉您是否从字符串的开头到结尾的所有字符都与字符类匹配。请参阅此处,了解几个测试字符串迭代。^
$
:print:
评论
0赞
Markus AO
12/24/2021
你复活的这首老歌有什么后续@Petah?(OP 已经存在很久了。
评论