php preg replace 修飾符u的作用

2022-06-05 03:15:12 字數 1168 閱讀 9564

手冊中的解釋是

」此修正符開啟乙個與perl不相容的附加功能. 模式字串被認為是utf-8的「

啥意思呢 個人也不不知道理解的對不對 說說自己的看法

utf8 是一種可變長度的編碼 乙個中文的utf8可能是2個 可能是3個也可能是4個位元組長度

正式因為這種編碼的特殊行 如果你沒有告訴php的再處理正則時用的是utf8 php可能自己就亂了 就容易吧中文截斷出現亂碼

如果加上這個引數呢 他會去分析首位元組判斷出真正的長度 這樣就不會亂了

test('/(\d+)(\d+)\w/u');

function test($pre

)

引用別人的utf8解釋:

utf,是unicode text format的縮寫,意為unicode文字格式。根據unicode的編碼可以生成utf編碼,轉換規則如下:

(1)首先將unicode的編碼轉換成二進位制形式,這樣乙個字元對應乙個16位的二進位制數。

(2)如果unicode的16位二進位制編碼的頭9位都是0,則用乙個位元組表示該字元,這個位元組的首位是「0」,剩下的7位與原編碼中的後7位相同。例如

「\u0034」(0000 0000 0011 0100),用「34」 (0011

0100)表示(與原unicode編碼是相同的,只是去掉了原編碼的首位元組);

(3)如果unicode的16位二進位制編碼的頭5位都是0,

則用兩個位元組表示該字元,首位元組以「110」開頭,該位元組後面的5位與源編碼中頭5個零後面的5位相同;第二個位元組以「10」開頭,後面的六位則與源編碼

中剩下的6位相同。例如「\u025d」(0000 0010 0101 1101),轉化後為「c99d」(1100 1001 1001

1101);

(4)如果unicode的16位二進位制編碼不符合上述兩個規則,則用三個位元組表示該字元。第乙個位元組以「1110」開頭,後四位

與源編碼的頭4位相同;第二個位元組以「10」開頭,後六位與原編碼接下來的6位相同;第三個位元組也以「10」開頭,後六位與原編碼剩下的6位相同,這樣原

來16位的編碼就轉換成三個位元組24位的編碼了;例如「\u9da7」(1001 1101 1010 0111),轉化為「e9b6a7」(1110

1001 1011 0110 1010 0111)。

Python MIMEMultipart 修改資訊

今天呼叫同事的mail模組,由於預設讀取配置檔案來獲取to 收件人 資訊,不想改他 於是嘗試在外部賦值 message info to xx xx.com 注 message info mimemultipart alternative 發現收件人仍是之前配置檔案中的收件人,而不是我賦值的xx 查詢...

修電腦奇遇

原文寫於23 april 2007 注 昨天下午到乙個朋友家修電腦,遇著怪事 一進系統,開啟 我的電腦 我的電腦 視窗就會狂閃,非常快速的不斷全屏 還原 全屏 還原,無休止 按鍵盤 開始 或者狂按 alt f4 能夠讓它停下來,之後一切正常。ie也是這樣。也不是每次開機都會這樣,有時沒事有時不行 初...

修電腦總結

從周五晚搞到週六晚,嘗試n多方法,最終以乙個盤的資料為代價修好電腦。事情是這樣的,之前電腦裝的ubantu和windows,用於學習命令列。偶然間發現c盤容量較小,於是在磁碟管理裡面給c盤重新分配了一些空間,導致重新開機時候,linux的開機引導介面檔案消失,不能正常引導開機,沒有了系統選擇介面,出...