第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 PHP 中驗證多語言名稱?

如何在 PHP 中驗證多語言名稱?

PHP
嚕嚕噠 2023-09-15 17:28:43
我正在使用 PHP 構(gòu)建一個全球網(wǎng)站,我希望用戶能夠用自己的語言輸入他們的名字和姓氏,而不僅僅是英語,例如:印度人將能夠用印度字母輸入他們的名字,俄羅斯人將能夠輸入他們的名字能夠用俄語字母輸入他們的名字,等等?,F(xiàn)在,我允許名字和姓氏僅包含字母。所以我的問題是我應(yīng)該如何驗證名稱?我的意思是:我應(yīng)該如何檢查這些名稱是否僅由字母組成?如果我只有英文名字,它會是這樣的:preg_match('/[^A-Za-z]/', $fname.$lname),但現(xiàn)在我不僅有英文字母。注意:我無法為每種不同的語言及其字母一次又一次地編寫此驗證公式。感謝您到目前為止閱讀這個問題。有任何想法嗎??
查看完整描述

1 回答

?
慕娘9325324

TA貢獻1783條經(jīng)驗 獲得超4個贊

如果您想使用正則表達式來驗證名稱,則必須使用修飾符打開 Unicode 模式/u。當處于 Unicode 模式時,PCRE 字符類不僅匹配 ASCII 字母,還包括任何語言和腳本中的字母字符。假設(shè)您使用了該類[:alpha:],或者在啟用 Unicode 的情況下\p{L}該類[:alpha:]擴展為:

$fname?=?'??????';
$lname?=?'Русский';
preg_match('/[^[:alpha:]]/u',?$fname.$lname));

這里“Russkiy”按預(yù)期驗證,但“Hindi”失敗。但為什么?印地語是一種附標文字,例如元音變音符號和固有元音靜音符作為其結(jié)構(gòu)的一部分。人們可能會假設(shè)"?","?""?"以上注冊為字母;然而他們沒有。它們屬于不同的類、\p{M}或與其他字符組合的字符。然后,為了匹配 abugida-alphabet 語言(例如印度文字,包括緬甸、泰語、藏語等),我們應(yīng)該使用:

preg_match('/([^\p{L}\p{M}])/u',?$fname.$lname));

我已初步驗證此組合與以下語言中預(yù)期的字母和組合標記字符匹配:阿卡德語、阿拉伯語、亞美尼亞語、希臘語、古吉拉特語、希伯來語、印地語、日語、馬拉雅拉姆語、普通話、俄語、僧伽羅語、蘇美爾語、泰米爾語、泰語。更詳盡的測試尚未完成,可以肯定地說,上面的內(nèi)容將涵蓋您的大部分字母基礎(chǔ)。

現(xiàn)在,關(guān)于驗證名稱的完全與 unicode 無關(guān)的問題。我注意到您不允許名稱中包含空格。害怕“亞伯拉罕·范海辛”“奧薩馬·本·拉登”嘗試報名的那一天。然后,你不允許經(jīng)期。那“VS Achuthanandan”呢,人們叫他“Vee Es”,因為“Velikkakathu Sankaran”讓你的嘴很累。那么“JK羅琳”呢?

再次強調(diào),不允許使用破折號。“卡里姆·阿卜杜勒-賈巴爾”“讓-呂克·皮卡德”怎么樣?沒有適合您的職業(yè)籃球或曲速驅(qū)動器。再次強調(diào),不允許使用撇號意味著“達達尼昂伯爵”可能會向你發(fā)起決斗挑戰(zhàn),而未來可能屬于天網(wǎng),因為“莎拉·奧康納”未能注冊。她不會回來了。你的網(wǎng)站不太酷。

又名老式鮑比桌(Bobby Tables)怎么樣?Robert'); DROP TABLE students;--,或者埃隆·馬斯克的新生兒“X ? A-12”。在那里,我已經(jīng)告訴您如何匹配任何語言中的任何字母或其片段。我還暗示,如果您允許上述所有內(nèi)容,幾乎是避免誤報的基線,那么它可能與一開始就不進行檢查沒有太大區(qū)別。給出“x!1?!!O'/nul1 W0W@本@?”?他/她有使用奇怪名字的自由,如果那是他們真正想要的。


查看完整回答
反對 回復(fù) 2023-09-15
  • 1 回答
  • 0 關(guān)注
  • 143 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號