[英]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.