簡體   English   中英

PHP正則表達式將不匹配重音字符

[英]PHP Regular Expression will not match accented characters

我正在嘗試構建一個與PHP兼容的正則表達式,該表達式將允許帶有重音符號的字符,例如“ü”。 據我了解\\ p {L}運算符應該執行此操作。 到目前為止,我有:

/^[a-z0-9\p{L}][a-z0-9_\p{L}]*/i

這應該允許一個字符串,該字符串可以以任何az,0-9和帶重音的字符開頭,然后可以跟隨任意數量的az,0-9和帶重音的字符,並且整個表達式不區分大小寫。

但是,在測試中,當在字符串的任意位置使用諸如“ü”之類的字符時,驗證將失敗。 我已確保通過以下方式使用utf8對要傳遞的值進行編碼:

utf8_encode($value)

但是它仍然失敗。 有什么建議么?

提前致謝

- - - - - - - - - - - - -編輯 - - - - - - - - - - - - --

在另一台服務器上進行測試后,原始模式也可以使用。

/^[a-z0-9\p{L}][a-z0-9_\p{L}]*/i

問題似乎出在服務器設置上。 找到后,我將發布解決方案。

我認為這可能對您有用:

$pattern =  '/^[0-9a-zá-úàü][0-9_a-zá-úàü]*$/i';

我運行以下代碼來測試模式:

$str = "patinação";
$pattern =  '/^[0-9a-zá-úàü][0-9_a-zá-úàü]*$/i';
if (preg_match($pattern, $str, $matches)){
    echo $matches[0];//output: patinação
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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