【发布时间】:2020-05-11 16:10:10
【问题描述】:
在发送邮件功能中,我有解码标头的代码:
preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches);
如果 in string 是一个符号,例如 ä (März) 那么它将返回一个空字符串。请帮助我,我该如何修复它(也可以与德语符号一起使用)?
谢谢!
【问题讨论】:
标签: php regex preg-match
在发送邮件功能中,我有解码标头的代码:
preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches);
如果 in string 是一个符号,例如 ä (März) 那么它将返回一个空字符串。请帮助我,我该如何修复它(也可以与德语符号一起使用)?
谢谢!
【问题讨论】:
标签: php regex preg-match
只需为 unicode 添加/u 标志:
preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/u', $str, $matches);
# here __^
【讨论】:
尝试在分隔符之外添加u 标志:
$str="März";
preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/u', $str, $matches);
print_r($matches);
如果您的 PHP 文件编码为 UTF-8,您还可以在模式中使用特殊字符:
preg_match_all('/[Mäz]/u', $str, $matches);
print_r($matches);
你可以测试一下here。
【讨论】: