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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

PHP一段正則表達(dá)式匹配結(jié)果不一致的問題

PHP一段正則表達(dá)式匹配結(jié)果不一致的問題

九州編程 2019-04-09 20:25:22
我自定的函數(shù)如下,功能是匹配出特殊字符:functionhasSpecialChar($subject){$pattern="/[`~!@#$%^&*()+=|{}':;',\\[\\].\/?~!@#¥%……&*()——+|{}【】‘;:”\"“’。,、?]/";if(preg_match($pattern,$subject)){returntrue;}returnfalse;}我的結(jié)果:var_dump(hasSpecialChar('問答社區(qū)'));//booleantruevar_dump(hasSpecialChar('Segmentfault'));//booleanfalsevar_dump(hasSpecialChar('@Segmentfault'));//booleantrue可以從第一個(gè)結(jié)果中看出是'問答社區(qū)'這個(gè)中文字符串被匹配出了特殊字符,但是我在Rubular上匹配'問答社區(qū)'則匹不出特殊字符,請(qǐng)問是不是我哪里寫錯(cuò)了?還是preg_match函數(shù)的為題呢?一直找不到原因。路過的大哥們幫幫忙,謝謝。
查看完整描述

2 回答

?
呼喚遠(yuǎn)方

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個(gè)贊

但是我在Rubular上匹配'問答社區(qū)'則匹不出特殊字符
Rubular是基于Ruby的,Ruby1.9以后對(duì)中文支持得很不錯(cuò)了。
請(qǐng)問是不是我哪里寫錯(cuò)了?
需要加上u修飾符,開啟UTF-8支持
$pattern="/[`~!@#$%^&*()+=|{}':;',\\[\\].<>\/?~!@#¥%……&*()——+|{}【】‘;:”\"“’。,、?]/u";
一直找不到原因。
是PHP對(duì)中文支持不夠好。
中文在PHP里是以16進(jìn)制保存的,這就帶來問題了。
比如,你的例子中,你匹配的那些特殊符號(hào)中包括中文的逗號(hào),你告訴PHP的是,我要匹配一組特殊符號(hào),其中包括中文的逗號(hào),[,],但是PHP不認(rèn)識(shí)中文,它聽到的是,你要匹配一組數(shù)據(jù),其中包括\xef、\xbc、\x8c(中文逗號(hào)轉(zhuǎn)換成十六進(jìn)制),然后你傳給它的“問答社區(qū)”,其中“區(qū)”字轉(zhuǎn)換成十六進(jìn)制就是\xe5、\x8c、\xba。你可以看到,這里\x8c匹配上了,所以最后結(jié)果是true。
同理,你可以嘗試找一下答字是因?yàn)楹湍膫€(gè)特殊符號(hào)的十六進(jìn)制匹配上了?
                            
查看完整回答
反對(duì) 回復(fù) 2019-04-09
?
莫回?zé)o

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

php漢字匹配可以考慮mb_相應(yīng)的函數(shù),例如:mb_ereg(),雖然有些問題,但是大體上能比較省事的解決問題。
如果使用GBK字符集建議考慮轉(zhuǎn)成UTF-8再處理。
                            
查看完整回答
反對(duì) 回復(fù) 2019-04-09
  • 2 回答
  • 0 關(guān)注
  • 373 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

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