簡體   English   中英

PHP 正則表達式 - 可選 Unicode UTF-8 字符(Ø?)不起作用

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM