လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Sprintf နှင့်ဆင်တူသောစိတ်ကြိုက်ပုံစံချရေးလုပ်ငန်းကိုမည်သို့အကောင်အထည်ဖော်ရမည်နည်း

Sprintf နှင့်ဆင်တူသောစိတ်ကြိုက်ပုံစံချရေးလုပ်ငန်းကိုမည်သို့အကောင်အထည်ဖော်ရမည်နည်း

gitbox 2025-04-28

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 ကိုမည်သို့စိတ်ကြိုက်ပြုလုပ်နိုင်ပုံကိုဤဆောင်းပါးတွင်မိတ်ဆက်ပေးလိမ့်မည်။

1 ။ ပစ်မှတ် function ကို

အောက်ပါလုပ်ဆောင်မှုများကိုထောက်ခံသည့် My_SSprintf ($ template args) function ကိုကျွန်ုပ်တို့အကောင်အထည်ဖော်လိုပါသည်။

  • % s နှင့် % d ကဲ့သို့သော placevers များကိုအစားထိုးပါ။

  • sequential parameterser သို့မဟုတ် array parameters တွေကိုထောက်ပံ့;

  • ကောင်းသောဖတ်နိုင်မှုနှင့်ထိန်းသိမ်းမှုကိုထိန်းသိမ်းရန်။

2 ။ အခြေခံအကောင်အထည်ဖော်မှု

% 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 သတင်းအသစ်。

3 ။ PARAMETERS အတွက် parameters တွေကိုအဖြစ်ထောက်ပံ့ရေး arrays

အကယ်. ကျွန်ုပ်တို့သည်ဤလုပ်ဆောင်မှုကိုအချက်များရှိ 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

4 ။ နောက်ထပ်ချဲ့ထွင်ခြင်း (bandwidth နှင့် padding)

% 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

5 ။ အကျဉ်းချုပ်

အထက်ပါဗားရှင်းများအပေါ်အကောင်အထည်ဖော်ခြင်းအားဖြင့်ကျွန်ုပ်တို့တွေ့နိုင်သည်။

  • စိတ်ကြိုက်ပုံစံချခြင်းလုပ်ဆောင်ချက်များသည်စီးပွားရေးလိုအပ်ချက်နှင့်အညီပြောင်းလွယ်ပြင်လွယ်ထိန်းချုပ်ရန်ခွင့်ပြုသည်။

  • callback function များနှင့်ပေါင်းစပ်ထားသောပုံမှန်အသုံးအနှုန်းများကိုအသုံးပြုခြင်းသည် Sprintf -like ကိုအကောင်အထည်ဖော်ရန်သော့ချက်ဖြစ်သည်။

  • အကယ်. သင်သည်ပိုမိုရှုပ်ထွေးသောပုံစံများကိုလိုအပ်ပါက (floaring point, binary, binary, placing order စသည်တို့) လိုအပ်ပါကပုံမှန်အသုံးအနှုန်းများ၏ခွဲခြမ်းစိတ်ဖြာမှုဆိုင်ရာစည်းမျဉ်းများကိုဆက်လက်တိုးချဲ့နိုင်သည်။

အမှန်တကယ်စီမံကိန်းများတွင်ထိုကဲ့သို့သောလုပ်ဆောင်ချက်များကိုဓလေ့ထုံးတမ်းပုံစံများ, သစ်ထုတ်လုပ်ရေးစနစ်များသို့မဟုတ် DSL (Domain-system) ဖွံ့ဖြိုးတိုးတက်မှုအတွက်မကြာခဏအသုံးပြုလေ့ရှိသည်။

သင်သည်ဤလုပ်ဆောင်မှုကိုသင်၏ကိုယ်ပိုင်ကိရိယာစာကြည့်တိုက်သို့ oncapsulate လုပ်နိုင်ပြီး https://gitbox.net ကဲ့သို့သောစီမံကိန်းများတွင်အသုံးပြုသည်။