PHP Development တွင် Multi-byte character (ဥပမာဂျပန်, ကိုးရီးယားစသည်တို့) ကြိုးများနှင့်ဆက်ဆံရာတွင်ချည်နှောင်ခြင်းများပြုလုပ်သောအခါ, သာမန် substr () function ကိုအသုံးပြုသောအခါ string ကိုကြားဖြတ်ရန်အတွက်, ၎င်းသည် byte စစ်ဆင်ရေးများအပေါ်အခြေခံထားသည့်အတွက်ကြောင့် concept ရလဒ်ကိုကြားဖြတ်ရန် code သို့မဟုတ် byte multi-byte အက္ခရာများကိုဖြစ်ပေါ်စေသည်။ ဤပြ problem နာကိုဖြေရှင်းရန် PHP သည် Iconv_substr () function ကိုထောက်ပံ့ပေးသည်။
ဒီဆောင်းပါးက iconv_substrcr () function ကိုဘယ်လိုသုံးရမလဲဆိုတာအသေးစိတ်အချက်အလက်တွေက strings တွေကိုကြားဖြတ်ဖို့သတ်မှတ်ထားတဲ့ဇာတ်ကောင်တွေကိုပုံဖော်ဖို့သတ်မှတ်ထားတဲ့ parameters တွေကိုသတ်မှတ်ပြီးအသေးစိတ်အချက်အလက်တွေကိုပုံဖော်ဖို့ပုံဖော်ပြသနိုင်မယ်ဆိုတာကိုအသေးစိတ်ဖော်ပြလိမ့်မယ်။
IconV_substred () သည် PHP တွင်ကြိုးများကိုကြားဖြတ်ရန်အသုံးပြုသော function တစ်ခုဖြစ်သည် ။ condbled code ပြ problems နာများကိုရှောင်ရှားရန်သတ်မှတ်ထားသောဇာတ်ကောင်အပေါ် အခြေခံ. Multi-byte ကြိုးများကိုမှန်ကန်စွာကြားဖြတ်နိုင်ပါသည်။
function ရှေ့ပြေးပုံစံသည်အောက်ပါအတိုင်းဖြစ်သည် -
string iconv_substr ( string $str , int $offset [, int $length = NULL [, string $charset = ini_get("iconv.internal_encoding") ]] )
$ str : changing string ကို။
$ offset : ကြားဖြတ် (ဇာတ်ကောင်မဟုတ်သော bytes) ၏ start အနေအထား။
$ အရှည် : ကြားဖြတ်သည့်အရှည်, string ကို၏အဆုံးမှကြားဖြတ်ရန် default ။
$ Charset : UTF-8 , GBK စသည်ဖြင့် string ကို set encoding set encoding ကိုသတ်မှတ်သည်။
strings ၏ဇာတ်ကောင် encoding ကွဲပြားခြားနားသောကြောင့်, byte အရှည်သည်လည်းကွဲပြားခြားနားသည်။ ဥပမာအားဖြင့်, တရုတ်ဇာတ်ကောင်သည် UTF-8 encoding နှင့် GBK encoding တွင် 3 bytes 3 ခုရှိသည်။ မှန်ကန်သောဇာတ်ကောင်အစုံမသတ်မှတ်ထားပါက iconv_substr () သည် string ၏ဇာတ်ကောင်နယ်နိမိတ်ကိုမှန်ကန်စွာခွဲခြား သတ်မှတ်. မရပါ။
utf-8 encoded တရုတ် string ကိုရှိပါတယ်ဆိုပါစို့:
<?php
$str = "ဝမ်းသာစွာနှုတ်ဆက်ခြင်းPHPstring ကိုကြားဖြတ်လုပ်ဆောင်ပါ。";
$substr = iconv_substr($str, 3, 5, "UTF-8");
echo $substr;
?>
ရှင်းပြပါ:
String ၏ 4 ပုံတွင်စတင်ပါ ( အော့ဖ်သည် 3, 0-based) ကြောင့်ဖြစ်သည်။
စာလုံး 5 လုံးကြားဖြတ်။
UTF-8 မှ set ဇာတ်ကောင်ကိုဖေါ်ပြသည်။
ရလဒ်ရလဒ် -
အသုံးပြုPHPဉီးစီး
interface လိပ်စာကိုရယူခြင်းကဲ့သို့သော code တွင် URL တစ်ခုကိုအသုံးပြုရန်လိုအပ်ပါက Domain Name ကို M66.net နှင့်အစားထိုးလိမ့်မည်။
<?php
// ကြားဖြတ်ခံရဖို့လိုအပ်ပါတယ်URLအတွက်လမ်းကြောင်းအပိုင်း
$url = "http://m66.net/api/v1/resource";
$path = parse_url($url, PHP_URL_PATH);
$substr = iconv_substr($path, 1, 5, "UTF-8");
echo $substr; // ထုတ်လုပ်ခြင်း /api/
?>
ကျေးဇူးပြု. ဆာဗာပတ် 0 န်းကျင်တွင် iconv extension ကိုဖွင့်ထားကြောင်းသေချာအောင်လုပ်ပါ။
$ offset နှင့် $ အရှည်သည် အက္ခရာများအတွက်မဟုတ်ဘဲအက္ခရာများတွင်ပါ 0 င်သည်။
ဇာတ်ကောင်သတ်မှတ်ထားသည့်အမည်မှာ string ၏အမှန်တကယ် encoding ကိုတိကျမှန်ကန်စွာကိုက်ညီရမည် ။
iconv_substred () ကိုအသုံးပြုပြီးသည့်အခါမှန်ကန်သောဇာတ်ကောင်ကိုသတ်မှတ်ခြင်းကိုသတ်မှတ်သည့်အခါ parameters များကိုသတ်မှတ်ခြင်းသည် Multibyte Strings ၏တိကျသောကြားဖြတ်မှုကိုသေချာစေရန်အတွက်သော့ချက်ဖြစ်သည်။ parameters တွေကိုကျိုးကြောင်းဆီလျော်စွာသတ်မှတ်ခြင်းအားဖြင့်တရုတ်နှင့်ဂျပန်တို့ကဲ့သို့သောရှုပ်ထွေးသောစာလုံးများကိုမှန်ကန်သောကြားဖြတ်ချက်ကိုရရှိရန်လွယ်ကူပြီး,