PHP တွင် Chr () တွင် Chr () သည်အလွန်အခြေခံဖြစ်သော်လည်းအသုံးအများဆုံး function ကို - ၎င်းသည်ကိန်း (0-255) နှင့်သက်ဆိုင်ရာ single-byte ဇာတ်ကောင်ကိုပြန်ပို့သည်။ ဥပမာအားဖြင့်, Chr (65) ပြန်လာ "a" ကိုပြန်ပို့သည်။ သို့သော် "အထူးအက္ခရာများ" - ထိန်းချုပ်မှုဇာတ်ကောင်များ, binary byte sequences သို့မဟုတ် multi-byte (utf-8) ဇာတ်ကောင်များ (တရုတ်, Emotsons) ဇာတ်ကောင်များ (တရုတ်, Emotsons) ဇာတ်ကောင်များအဖြစ်ကိုင်တွယ်ဖြေရှင်းသည့်အခါ Chr (Multies) ၏အကန့်အသတ်များနှင့်အခြားနည်းများကိုနားလည်ရန်လိုအပ်သည်။
အောက်ပါတို့သည်ဘုံဓလေ့ထုံးစံများနှင့်ကြိုတင်ကာကွယ်မှုများပြုလုပ်နိုင်ရန်နှင့်တိုက်ရိုက်ကူးယူနိုင်ကြောင်းဥပမာများပေးသည်။
Single-byte အက္ခရာများကိုထုတ်လုပ်ခြင်းတွင် မည်သည့် Chr () သည်အကောင်းဆုံးဖြစ်သည်။ ၎င်းသည်အသစ်များ, tabs များ, မမြင်ရသောထိန်းချုပ်မှုအက္ခရာများသို့မဟုတ်မည်သည့် byte တန်ဖိုးများကိုမဆိုထုတ်လုပ်ရန်အသုံးပြုနိုင်သည်။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// အရင်းအနှီးငေှ A</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-number">65</span></span><span>); </span><span><span class="hljs-comment">// ထုတ်လုပ်ခြင်း A</span></span><span>
</span><span><span class="hljs-comment">// လိုင်းချိုး(LF)</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"line1"</span></span><span> . </span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-number">10</span></span><span>) . </span><span><span class="hljs-string">"line2"</span></span><span>;
</span><span><span class="hljs-comment">// tab သင်္ကေတများ(TAB)</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"col1"</span></span><span> . </span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-number">9</span></span><span>) . </span><span><span class="hljs-string">"col2"</span></span><span>;
</span><span><span class="hljs-comment">// Binary Data အပိုင်းအစများကိုထုတ်လုပ်ပါ</span></span><span>
</span><span><span class="hljs-variable">$bytes</span></span><span> = </span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-number">0x00</span></span><span>) . </span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-number">0xFF</span></span><span>) . </span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-number">0x7A</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$bytes</span></span><span>); </span><span><span class="hljs-comment">// string(3) "\x00\xFFz"</span></span><span>
</span></span>ထိပ်ဖ်ား : binary protocols များကိုသင်ကိုင်တွယ်သောအခါ File Headers သို့မဟုတ် Network Packages များ, Chr () သည်မည်သည့် bytes ကိုမဆိုတည်ဆောက်ရန်အလွန်အဆင်ပြေသည်။
အကယ်. သင်သည်တစ်ပြိုင်နက်တည်း bytes များကိုတစ်ပြိုင်နက်တည်းဆောက်လုပ်လိုပါက Pack () သည် ch ch chro () အမြောက်အမြားထက်ပိုမိုရိုးရှင်းပြီးစွမ်းဆောင်ရည်ပိုမိုကောင်းမွန်သည်။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// အသုံးပြု pack သုံး bytes ထုတ်ပေး:0x01 0x02 0x03</span></span><span>
</span><span><span class="hljs-variable">$bin</span></span><span> = </span><span><span class="hljs-title function_ invoke__">pack</span></span><span>(</span><span><span class="hljs-string">'C*'</span></span><span>, </span><span><span class="hljs-number">0x01</span></span><span>, </span><span><span class="hljs-number">0x02</span></span><span>, </span><span><span class="hljs-number">0x03</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">bin2hex</span></span><span>(</span><span><span class="hljs-variable">$bin</span></span><span>); </span><span><span class="hljs-comment">// ထုတ်လုပ်ခြင်း "010203"</span></span><span>
</span><span><span class="hljs-comment">// splicing chr လမ်း(ညီမျှခြင်း)</span></span><span>
</span><span><span class="hljs-variable">$bin2</span></span><span> = </span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>) . </span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-number">2</span></span><span>) . </span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-number">3</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">bin2hex</span></span><span>(</span><span><span class="hljs-variable">$bin2</span></span><span>); </span><span><span class="hljs-comment">// "010203"</span></span><span>
</span></span>Chr () သည် တစ်ခုတည်းသော bytes များကိုပြန်ပို့သည်။ UTF-8 Multibyte ဇာတ်ကောင်များ (Code Point> 0xFF) ကို Chrice () မှတိုက်ရိုက်ထုတ်ပေး။ မရပါ။ ဘုံရွေးချယ်စရာများတွင် -
လူသိများသောယူနီကုတ်ကုဒ်အမှတ်အသားများအတွက် (U + 1F600 Emoticons ကဲ့သို့) သင်သူတို့ကို UTF-8 သို့ပြောင်းလဲနိုင်သည် HTML အဖွဲ့အစည်းများမှတဆင့်ပြောင်းလဲနိုင်သည်။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 使အသုံးပြု HTML Entity မျိုးဆက်အမြင် Emoticons(ဥပမာအားဖြင့် ?? U+1F600)</span></span><span>
</span><span><span class="hljs-variable">$emoji</span></span><span> = </span><span><span class="hljs-title function_ invoke__">html_entity_decode</span></span><span>(</span><span><span class="hljs-string">'&#x1F600;'</span></span><span>, ENT_NOQUOTES, </span><span><span class="hljs-string">'UTF-8'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$emoji</span></span><span> . PHP_EOL;
</span></span>ဆာဗာတွင် ext-intl enable လုပ်ထားပါကစာလုံးများကိုထုတ်လုပ်ရန် Unicode ကုဒ်နံပါတ်ကိုတိုက်ရိုက်နှိပ်နိုင်သည်။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// လိုအပ်ချက် ext-intl</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title class_">IntlChar</span></span><span>::</span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-number">0x4E2D</span></span><span>); </span><span><span class="hljs-comment">// ထုတ်လုပ်ခြင်း "အလယ်ပိုင်း"</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title class_">IntlChar</span></span><span>::</span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-number">0x1F600</span></span><span>); </span><span><span class="hljs-comment">// ထုတ်လုပ်ခြင်း ??(ညှစ်ခြင်း)</span></span><span>
</span></span>UTF-8 Hexadecimal Byte ကိုလူသိများသောဇာတ်ကောင်များအပေါ်တွင် byte string ကိုတိုက်ရိုက်တည်ဆောက်နိုင်သည်။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// "အလယ်ပိုင်း" ၏ UTF-8 encoding သည် E4 B8 AD</span></span><span>
</span><span><span class="hljs-variable">$zh</span></span><span> = </span><span><span class="hljs-title function_ invoke__">hex2bin</span></span><span>(</span><span><span class="hljs-string">'e4b8ad'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$zh</span></span><span>; </span><span><span class="hljs-comment">// ထုတ်လုပ်ခြင်း အလယ်ပိုင်း</span></span><span>
</span><span><span class="hljs-comment">// ညှစ်ခြင်း ?? ၏ UTF-8 encoding သည် F0 9F 98 80</span></span><span>
</span><span><span class="hljs-variable">$emoji</span></span><span> = </span><span><span class="hljs-title function_ invoke__">hex2bin</span></span><span>(</span><span><span class="hljs-string">'f09f9880'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$emoji</span></span><span>; </span><span><span class="hljs-comment">// ထုတ်လုပ်ခြင်း ??</span></span><span>
</span></span>မှတ်ချက် - ဤနေရာတွင် Hex2Bin () UTF-8 ၏ Byte တန်ဖိုးကိုတိုက်ရိုက်ရေးသားခြင်းသည်သင်သိတဲ့အမှုများအတွက်သင်သိသောအမှုပေါင်း (ဥပမာ packet capture မှ) သင်သိသောအမှုပေါင်းများအတွက်သင့်လျော်သည်။
သင့်တွင် Integer Point ရှိပါက UTF-8 အက္ခရာများသို့ပြောင်းရန်အထွေထွေလုပ်ဆောင်ချက်တစ်ခုလိုအပ်သည်။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">codepoint_to_utf8</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-keyword">int</span></span></span><span> </span><span><span class="hljs-variable">$cp</span></span><span>): </span><span><span class="hljs-title">string</span></span><span> {
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$cp</span></span><span> <= </span><span><span class="hljs-number">0x7F</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-variable">$cp</span></span><span>);
} </span><span><span class="hljs-keyword">elseif</span></span><span> (</span><span><span class="hljs-variable">$cp</span></span><span> <= </span><span><span class="hljs-number">0x7FF</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-number">0xC0</span></span><span> | (</span><span><span class="hljs-variable">$cp</span></span><span> >> </span><span><span class="hljs-number">6</span></span><span>)) .
</span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-number">0x80</span></span><span> | (</span><span><span class="hljs-variable">$cp</span></span><span> & </span><span><span class="hljs-number">0x3F</span></span><span>));
} </span><span><span class="hljs-keyword">elseif</span></span><span> (</span><span><span class="hljs-variable">$cp</span></span><span> <= </span><span><span class="hljs-number">0xFFFF</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-number">0xE0</span></span><span> | (</span><span><span class="hljs-variable">$cp</span></span><span> >> </span><span><span class="hljs-number">12</span></span><span>)) .
</span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-number">0x80</span></span><span> | ((</span><span><span class="hljs-variable">$cp</span></span><span> >> </span><span><span class="hljs-number">6</span></span><span>) & </span><span><span class="hljs-number">0x3F</span></span><span>)) .
</span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-number">0x80</span></span><span> | (</span><span><span class="hljs-variable">$cp</span></span><span> & </span><span><span class="hljs-number">0x3F</span></span><span>));
} </span><span><span class="hljs-keyword">elseif</span></span><span> (</span><span><span class="hljs-variable">$cp</span></span><span> <= </span><span><span class="hljs-number">0x10FFFF</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-number">0xF0</span></span><span> | (</span><span><span class="hljs-variable">$cp</span></span><span> >> </span><span><span class="hljs-number">18</span></span><span>)) .
</span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-number">0x80</span></span><span> | ((</span><span><span class="hljs-variable">$cp</span></span><span> >> </span><span><span class="hljs-number">12</span></span><span>) & </span><span><span class="hljs-number">0x3F</span></span><span>)) .
</span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-number">0x80</span></span><span> | ((</span><span><span class="hljs-variable">$cp</span></span><span> >> </span><span><span class="hljs-number">6</span></span><span>) & </span><span><span class="hljs-number">0x3F</span></span><span>)) .
</span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-number">0x80</span></span><span> | (</span><span><span class="hljs-variable">$cp</span></span><span> & </span><span><span class="hljs-number">0x3F</span></span><span>));
}
</span><span><span class="hljs-keyword">throw</span></span><span> </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-built_in">InvalidArgumentException</span></span><span>(</span><span><span class="hljs-string">'Invalid Unicode code point'</span></span><span>);
}
</span><span><span class="hljs-comment">// 使အသုံးပြု</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">codepoint_to_utf8</span></span><span>(</span><span><span class="hljs-number">0x4E2D</span></span><span>); </span><span><span class="hljs-comment">// အလယ်ပိုင်း</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">codepoint_to_utf8</span></span><span>(</span><span><span class="hljs-number">0x1F600</span></span><span>); </span><span><span class="hljs-comment">// ??</span></span><span>
</span></span>UTF-8 byte တစ်ခုချင်းစီကိုတည်ဆောက်ရန်အတွက်ဤလုပ်ဆောင်ချက်သည် Chr () ကို အသုံးပြုနေဆဲဖြစ်သည်။ ၎င်းသည်စင်ကြယ်သော PHP အတွက်အထွေထွေဖြေရှင်းနည်းဖြစ်သည်။
Chr ()) ၏ parametere range () : တစ်ခုတည်း byte (0-255) နှင့်သာသက်ဆိုင်သည်။ 255 ထက်သာသောတန်ဖိုးများကိုဖြတ်သန်းခြင်းသည်သင်လိုချင်သောအပြုအမူမဟုတ်သည့်အရာ (အောက်ပိုင်း 8-bits) ကိုယူခြင်း (နိမ့်သော 8 bits) ကိုရိုက်ကူးနိုင်သည်။
encoding envirement encoding environment : Multibyte ဇာတ်ကောင်များအပေါ်ရေးဆွဲသည့်အခါ UTF-8 နှင့်ထိုဆက်နွယ်သောလုပ်ဆောင်ချက်များ ( json_encode ကဲ့သို့ strlen ) သည် MB_ * စီးရီးကိုအသုံးပြုရန်သတိထားပါ။
Display နှင့် Transfer : အချို့သောပတ်ဝန်းကျင် (ဆိပ်ကမ်းများ, HTTP ခေါင်းစီးများ, ဒေတာဘေ့စ်ကော်လံများ) သည် encoding ကိုအထိခိုက်မခံပါ။ UTF-8 စာလုံးများကိုတည်ဆောက်ခြင်းပြီးနောက်မှန်ကန်သော encoding ကိုကြေငြာပြီးနောက် (ဥပမာ - Meta Charset = "UTF-8" ) သို့ (adda charset = "utf-8") သို့ add add add add add add add type-type: text / html ;
ဦး စားပေး Tools : သင် Unicode ကုဒ်အချက်များနှင့်သင်သာကိုင်တွယ်ရန်လိုအပ်ပါက intlchar :: Chr () (ရှိလျှင်) သို့မဟုတ် MB_ * / MB_ * / ပြောင်းလဲခြင်းလုပ်ဆောင်ချက်များကိုသူတို့ semantics များကဲ့သို့အသုံးပြုသည်။
<span><span><span class="hljs-comment">// တစ်ခုတည်း byte ဇာတ်ကောင်</span></span><span>
</span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-number">65</span></span><span>); </span><span><span class="hljs-comment">// "A"</span></span><span>
</span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-number">10</span></span><span>); </span><span><span class="hljs-comment">// LF လိုင်းချိုး</span></span><span>
</span><span><span class="hljs-comment">// Multi-byte / Unicode ရေှးယူနိုင်ခြင်း</span></span><span>
</span><span><span class="hljs-title function_ invoke__">html_entity_decode</span></span><span>(</span><span><span class="hljs-string">'&#x1F600;'</span></span><span>, ENT_NOQUOTES, </span><span><span class="hljs-string">'UTF-8'</span></span><span>); </span><span><span class="hljs-comment">// ??</span></span><span>
</span><span><span class="hljs-title class_">IntlChar</span></span><span>::</span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-number">0x4E2D</span></span><span>); </span><span><span class="hljs-comment">// "အလယ်ပိုင်း"(လိုအပ်ချက် ext-intl)</span></span><span>
</span><span><span class="hljs-title function_ invoke__">hex2bin</span></span><span>(</span><span><span class="hljs-string">'e4b8ad'</span></span><span>); </span><span><span class="hljs-comment">// "အလယ်ပိုင်း"(直接အသုံးပြု UTF-8 hexadecimals bytes)</span></span><span>
</span><span><span class="hljs-comment">// CONCOM အချက်များပြောင်းပါ UTF-8(见上面၏ codepoint_to_utf8)</span></span><span>
</span></span>Chr () သည် byte (0-255) အက္ခရာများနှင့် binary data များကိုထုတ်လုပ်သည့်အခါအလွန်ရိုးရှင်းပြီးတိုက်ရိုက်ဖြစ်သည်။ Byti-byte Unicode ဇာတ်ကောင်များ (တရုတ်, Emoji) နှင့်ရင်ဆိုင်ရသောအခါ intlchar :: Chr () , HTML entity ပြောင်းလဲခြင်း, HTML entity () သို့မဟုတ်စိတ်ကြိုက်ကုဒ်အမှတ် - Utf-Utf-8 ပြောင်းလဲခြင်းလုပ်ဆောင်ချက်များဖြင့်ယုံကြည်စိတ်ချရသောရလဒ်များကိုရရှိရန်လိုအပ်သည်။ သင်၏တိကျသောမြင်ကွင်း (ကွန်ယက် protocol) အရသင့်လျော်သောနည်းလမ်းကိုရွေးချယ်ခြင်း (ကွန်ယက် protocol protocol, project protcole, ဝက်ဘ်စာမျက်နှာ output) ကိုအာရုံစိုက်ခြင်းနှင့် encoding ရှေ့နောက်ညီညွတ်မှုကိုဂရုပြုခြင်း, အထူး "အထူးအက္ခရာများ" ကြိုးအမျိုးမျိုးကိုပြုလုပ်နိုင်သည်။