[英]PHP Regex - optional Unicode UTF-8 character (Ø?) is not working
我有字符串,其中包含 Ø 字符但并非总是如此:
$pattern = '/Ø?\d+[a-z-]+Ø?\d+/i';
if (preg_match($pattern, 'Ø66-SX-76', $matched)) {
print_r($matched);
}
if (preg_match($pattern, '58-SX-72', $matched)) {
print_r($matched);
}
if (preg_match($pattern, 'Ø66-SX-Ø76', $matched)) {
//only this one matches
print_r($matched);
}
这些是我正在处理的字符串的基本示例。
有人可以解释为什么前两个案例不匹配吗?
当我尝试使用 regexpal.com 时,此模式适用于所有情况,但在 PHP 上它不起作用
您可以指示正则表达式引擎将输入字符串视为 utf-8。 在末尾添加u
修饰符:
$pattern = '/Ø?\d+[a-z-]+Ø?\d+/iu';
感谢@Joey,在括号中添加包装 Ø 起作用:
$pattern = '/(Ø)?\d+[a-z-]+(Ø)?\d+/i';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.