PHP ပရိုဂရမ်တွင် Sprintf function သည်အလွန်အသုံးများသော format format function ကိုအသုံးပြုသည်။ ၎င်းသည်ပုံမှန်အားဖြင့် dynamic ပါဝင်သောအကြောင်းအရာနှင့် output ကိုထုတ်လုပ်ရန်အသုံးပြုသောသတ်မှတ်ထားသောပုံစံဖြင့် variable တန်ဖိုးများကိုပုံစံအမျိုးမျိုးဖြင့်ပုံစံများဖြင့်ပုံစံအမျိုးမျိုးဖြင့်ပုံစံပြုရန်ခွင့်ပြုသည်။ သို့သော်ဘာသာစကားမျိုးစုံသောပတ် 0 န်းကျင်တွင် Sprintf ကို အသုံးပြုသောအခါသင်ရုံ barbled code ပြ problems နာများကြုံတွေ့ရနိုင်သည်။ ဤပြ problem နာသည်များသောအားဖြင့်စာလုံးများကို encoding နှင့် localization settings နှင့်ဆက်စပ်နေသည်။ ဤဆောင်းပါးမျိုးသည်ဤညစ်ညမ်းမှုအမျိုးအစားမျိုးကိုအဘယ်ကြောင့်ဤပြ problem နာကိုမည်သို့ဖြေရှင်းရမည်ကိုဤဆောင်းပါးကဤဆောင်းပါးကဆန်းစစ်ပါလိမ့်မည်။
အက်ခရာ encoding ကိုက်ညီမှုမရှိပါ ဘာသာစကားမျိုးစုံပတ် 0 န်းကျင်တွင်ဇာတ်ကောင် encoding processing သည်အလွန်အရေးကြီးသည်။ PHP သည် ISO-8859-1 သို့မဟုတ် UTF-8 encoding formats ကိုအသုံးပြုသည်။ အကယ်. သင်၏ input data သို့မဟုတ် system default character set သည် Sprintf မှလုပ်ငန်းများ၌ပါ 0 င်သည့်ဇာတ်ကောင်များနှင့်ကိုက်ညီမှုမရှိပါကအမှိုက်များပြ problems နာများဖြစ်ပေါ်စေနိုင်သည်။ ဥပမာအားဖြင့်, ဒေတာဘေ့စ်မှအချက်အလက်များရသောအခါ Database သည် UTF-8 encoding ကို အသုံးပြု. PHP သည် ISO-8859-1 encoding ကိုအသုံးပြုသည်။ string ကို format လုပ်သည့်အခါ carbled code ပေါ်လာသည်။
ဒေသသည်မသင့်လျော်ပါ။ PHP ရှိ Setlocale () function ကိုလက်ရှိပတ်ဝန်းကျင်၏ဒေသကိုသတ်မှတ်ရန်အသုံးပြုသည်။ Locale Setting တွင်ဘာသာစကား, ငွေကြေး, နေ့စွဲပုံစံနှင့်အခြားအချက်အလက်များပါဝင်သည်။ အကယ်. တည်နေရာကို ဘာသာစကားမျိုးစုံပတ် 0 န်းကျင်တွင်မှန်ကန်စွာမသတ်မှတ်ထားပါက Sprintf function သည်မသင့်လျော်သောပုံစံချခြင်းဆိုင်ရာစည်းမျဉ်းများကိုသုံးနိုင်သည်။
string တစ်ခုမှာအထူးအက္ခရာများပါ 0 င်သည် string တွင် ascii မဟုတ်သောဇာတ်ကောင်များ (တရုတ်, ဂျပန်, ဂျပန်, အခြားအထူးအက္ခရာများကဲ့သို့သော) တွင်ပါ 0 င်ပါကအမှိုက်များလည်းဖြစ်စေနိုင်သည်။
အခြေခံအကျဆုံးဖြေရှင်းနည်းမှာ PHP code တွင်ပါ 0 င်သည့်ကြိုးများအားလုံးကိုတစ်ပုံစံတည်း encoded လုပ်ခြင်းနှင့် UTF-8 ကိုအကြံပြုသည်။ ပထမ ဦး စွာဒေတာဗေ့စ်, PPP ဖိုင်များနှင့် browser များအားလုံး UTF-8 ကို အသုံးပြု. encoded ကြောင်းသေချာပါစေ။
ဇာတ်ကောင် set ကိုသတ်မှတ်ရန်အောက်ပါကုဒ်ကို PHP ဖိုင်၏ထိပ်တွင်ထည့်ပါ။
header('Content-Type: text/html; charset=UTF-8');
အကယ်. ဒေတာဘေ့စ်သည် UTF-8 encoding ဖြစ်ပါက PHP သည်ဒေတာဘေ့စ်၏ဇာတ်ကောင်နှင့်ကိုက်ညီမှုရှိစေရန်လည်းလိုအပ်သည်။ ဒေတာဘေ့စ် connection ချိတ်ဆက်သောအခါသင်အက်ခရာသတ်မှတ်ချက်ကိုသတ်မှတ်နိုင်သည်။
mysqli_set_charset($conn, 'utf8');
ဘာသာစကားပေါင်းစုံသောပတ်ဝန်းကျင်တွင် setlocale () function ကိုလက်ရှိဒေသန္တရပတ်ဝန်းကျင်ကိုသတ်မှတ်ရန်အသုံးပြုသည်။ Sprintf ကို မသုံးမီဇုန်အချက်အလက်များကိုမှန်ကန်စွာသတ်မှတ်ထားကြောင်းသေချာပါစေ။ ဥပမာအားဖြင့်, သင်၏ system သည်တရုတ်ကိုထောက်ပံ့ပါက၎င်းကို၎င်းကိုဤကဲ့သို့သတ်မှတ်နိုင်သည်။
setlocale(LC_ALL, 'zh_CN.UTF-8');
ဤနည်းအားဖြင့် Sprintf လုပ်ဆောင်ချက်သည် conclfed code ကိုရှောင်ရှားရန်မှန်ကန်သောပုံစံချခြင်းဆိုင်ရာစည်းမျဉ်းများကိုလိုက်နာလိမ့်မည်။
PHP သည် Multibyte ဇာတ်ကောင်များပါ 0 င်သောကြိုးများကိုပြုလုပ်ရန်အထူးအသုံးပြုသော php multibyte ဇာတ်ကောင် (Mbstring) extension ကိုထောက်ပံ့ပေးသည်။ MB_smrintf အစား MB_sprintf function ကို သုံး. Multibyte အက္ခရာများကိုကိုင်တွယ်ဖြေရှင်းပြီး conbled code ကိုရှောင်ရှားနိုင်သည်။
နမူနာကုဒ်:
echo mb_sprintf("မင်္ဂလာပါ,%s!", $name);
MB_Sprintf ကို အသုံးပြုသောအခါ, သင်တပ်ဆင်ထားပြီး Mbstring extension ကိုသေချာအောင်လုပ်ပါ။
သင်၏ကုဒ်ထဲ၌ URLs များကိုသင်၏ကုဒ်ထဲ၌ရေးဆွဲစဉ်အထူးသဖြင့် string string ကို string လုပ်သည့်အခါ URL ၏ domain name သည်သင်အမှန်တကယ်အမှန်တကယ်အသုံးပြုနေသောဒိုမိန်းအမည်နှင့်ကိုက်ညီကြောင်းသေချာပါစေ။ သင့်တွင်အစားထိုးရန်လိုအပ်သည့် URL တွင် domain name တစ်ခုရှိပါက domain name ကို dvificature လုပ်ရန် strit_replace () ကို သုံးနိုင်သည်။ ဥပမာအားဖြင့်:
$url = 'https://www.example.com/somepath';
$url = str_replace('www.example.com', 'gitbox.net', $url);
ဤနည်းအားဖြင့် URL အားလုံးသည် gitbox.net domain name ကိုမှန်ကန်စွာညွှန်ပြရန်သေချာစေနိုင်သည်။
အများအားဖြင့်ဘာသာစကားမျိုးစုံပတ် 0 န်းကျင်တွင် Sprintf ကို အသုံးပြုသောအခါ carbled code ၏ရင်းမြစ်အကြောင်းအရင်းသည်များသောအားဖြင့်ဇာတ်ကောင် encoding နှင့် locale settings များပြ issues နာများဖြစ်သည်။ encoding encoding ကိုတသမတ်တည်းရှိကြောင်းသေချာစေရန်, MB_sprintf နှင့်အခြားနည်းလမ်းများကို အသုံးပြု. အပိုဒ်ကိုသုံးခြင်း, နောက်ဆုံးတွင်သင်၏ကုဒ်သည် URL အစားထိုးခြင်းပါ 0 င်ပါက Domain Name သည်တိကျမှန်ကန်ပြီး string ကိုအစားထိုးခြင်းဖြင့်ကိုင်တွယ်နိုင်ကြောင်းသေချာစေရန်သတိရပါ။