PHP တွင် Sprintf function သည်အားကြီးသော string formating tool တစ်ခုဖြစ်သည်။ ဥပမာအားဖြင့်:
$name = "Alice";
$age = 30;
echo sprintf("ကျွန်တော့်အမည်မှာ %s,ဒီနှစ် %d အသက်အရွယ်。", $name, $age);
output ကို:
ကျွန်တော့်အမည်မှာ Alice,ဒီနှစ် 30 အသက်အရွယ်。
Sprintf သည်အလွန်လက်တွေ့ကျသော်လည်းတစ်ခါတစ်ရံကျွန်ုပ်တို့သည် formatting method ကိုထိန်းချုပ်ရန်ပြောင်းလွယ်ပြင်လွယ်ရှိလိုပေမည်, PHPT ကိုသုံးပြီး Sprintf နှင့်ဆင်တူသည့် formatting function ကိုမည်သို့စိတ်ကြိုက်ပြုလုပ်နိုင်ပုံကိုဤဆောင်းပါးတွင်မိတ်ဆက်ပေးလိမ့်မည်။
အောက်ပါလုပ်ဆောင်မှုများကိုထောက်ခံသည့် My_SSprintf ($ template args) function ကိုကျွန်ုပ်တို့အကောင်အထည်ဖော်လိုပါသည်။
% s နှင့် % d ကဲ့သို့သော placevers များကိုအစားထိုးပါ။
sequential parameterser သို့မဟုတ် array parameters တွေကိုထောက်ပံ့;
ကောင်းသောဖတ်နိုင်မှုနှင့်ထိန်းသိမ်းမှုကိုထိန်းသိမ်းရန်။
% s နှင့် % d တစ်ခုတည်းကိုသာထောက်ပံ့သောရိုးရှင်းသောအကောင်အထည်ဖော်မှုဖြင့်စတင်သည်။
function my_sprintf($template, ...$args) {
$argIndex = 0;
$result = preg_replace_callback('/%[sd]/', function($matches) use (&$args, &$argIndex) {
$placeholder = $matches[0];
$value = $args[$argIndex++] ?? '';
if ($placeholder === '%d') {
return intval($value);
} elseif ($placeholder === '%s') {
return strval($value);
} else {
return $placeholder;
}
}, $template);
return $result;
}
echo my_sprintf("ဝမ်းသာစွာနှုတ်ဆက်ခြင်း %s,သင်မှာ .... ရှိသည် %d သတင်းအသစ်。", "Alice", 5);
ထုတ်လုပ်မှု -
ဝမ်းသာစွာနှုတ်ဆက်ခြင်း Alice,သင်မှာ .... ရှိသည် 5 သတင်းအသစ်。
အကယ်. ကျွန်ုပ်တို့သည်ဤလုပ်ဆောင်မှုကိုအချက်များရှိ parameters တွေကို passing passing ကိုပံ့ပိုးပေးလိုလျှင်အနည်းငယ်ပြုပြင်နိုင်သည် -
function my_sprintf_array($template, array $args) {
$argIndex = 0;
$result = preg_replace_callback('/%[sd]/', function($matches) use (&$args, &$argIndex) {
$placeholder = $matches[0];
$value = $args[$argIndex++] ?? '';
return match ($placeholder) {
'%d' => intval($value),
'%s' => strval($value),
default => $placeholder,
};
}, $template);
return $result;
}
echo my_sprintf_array("ကျေးဇူးပြုပြီးလည်ပတ်ပါ https://gitbox.net/user/%s,အရေးကြီးတဲ့:%d", ["alice", 100]);
ထုတ်လုပ်မှု -
ကျေးဇူးပြုပြီးလည်ပတ်ပါ https://gitbox.net/user/alice,အရေးကြီးတဲ့:100
% 05D (Width သည် 5 ဖြစ်ပြီးသုညတွင်သုညထည့်သွင်းထားသည့်ပုံစံများကိုထပ်မံအထောက်အပံ့ပေးနိုင်သည်။
function my_sprintf_extended($template, ...$args) {
$argIndex = 0;
$result = preg_replace_callback('/%0?(\d*)([sd])/', function($matches) use (&$args, &$argIndex) {
$width = (int)($matches[1] ?? 0);
$type = $matches[2];
$value = $args[$argIndex++] ?? '';
if ($type === 'd') {
$formatted = str_pad(intval($value), $width, '0', STR_PAD_LEFT);
} else {
$formatted = strval($value);
}
return $formatted;
}, $template);
return $result;
}
echo my_sprintf_extended("အော်ဒါနံပါတ်:%05d,အသုံးပြုသူ:%s", 42, "bob");
ထုတ်လုပ်မှု -
အော်ဒါနံပါတ်:00042,အသုံးပြုသူ:bob
အထက်ပါဗားရှင်းများအပေါ်အကောင်အထည်ဖော်ခြင်းအားဖြင့်ကျွန်ုပ်တို့တွေ့နိုင်သည်။
စိတ်ကြိုက်ပုံစံချခြင်းလုပ်ဆောင်ချက်များသည်စီးပွားရေးလိုအပ်ချက်နှင့်အညီပြောင်းလွယ်ပြင်လွယ်ထိန်းချုပ်ရန်ခွင့်ပြုသည်။
callback function များနှင့်ပေါင်းစပ်ထားသောပုံမှန်အသုံးအနှုန်းများကိုအသုံးပြုခြင်းသည် Sprintf -like ကိုအကောင်အထည်ဖော်ရန်သော့ချက်ဖြစ်သည်။
အကယ်. သင်သည်ပိုမိုရှုပ်ထွေးသောပုံစံများကိုလိုအပ်ပါက (floaring point, binary, binary, placing order စသည်တို့) လိုအပ်ပါကပုံမှန်အသုံးအနှုန်းများ၏ခွဲခြမ်းစိတ်ဖြာမှုဆိုင်ရာစည်းမျဉ်းများကိုဆက်လက်တိုးချဲ့နိုင်သည်။
အမှန်တကယ်စီမံကိန်းများတွင်ထိုကဲ့သို့သောလုပ်ဆောင်ချက်များကိုဓလေ့ထုံးတမ်းပုံစံများ, သစ်ထုတ်လုပ်ရေးစနစ်များသို့မဟုတ် DSL (Domain-system) ဖွံ့ဖြိုးတိုးတက်မှုအတွက်မကြာခဏအသုံးပြုလေ့ရှိသည်။
သင်သည်ဤလုပ်ဆောင်မှုကိုသင်၏ကိုယ်ပိုင်ကိရိယာစာကြည့်တိုက်သို့ oncapsulate လုပ်နိုင်ပြီး https://gitbox.net ကဲ့သို့သောစီမံကိန်းများတွင်အသုံးပြုသည်။