ပရိုဂရမ်တွင် Programming တွင် FNMATCE () သည် ပုံစံများကို အခြေခံ. ဖိုင်အမျိုးအစားနှင့်ကိုက်ညီသောအလွန်အသုံးများသော function တစ်ခုဖြစ်သည်။ PHP တွင် FNMATC () ကို အဓိကအားဖြင့် file system ရှိ File System တွင်ဖိုင်အမည်များနှင့်ကိုက်ညီရန်အသုံးပြုသည်။ သို့သော် developer များစွာသည်အထူးသဖြင့် Windows နှင့် Linux ပတ် 0 န်းကျင်တွင်ပလက်ဖောင်းများ၌ပလက်ဖောင်းများပေါ်တွင်မတူကွဲပြားသောလည်ပတ်မှုစနစ်များကိုကွဲပြားစွာပြုမူကြောင်းတွေ့ရှိရသည် ။ ဒီတော့အဘယ်ကြောင့် fnmatch () သည် ဤ operating system နှစ်ခုတွင်ကွဲပြားခြားနားသောအပြုအမူများကိုပြသသနည်း။ operating system ကွဲပြားခြားနားမှုများသည်ဖိုင်ကိုက်ညီမှု၏ရလဒ်များကိုအမှန်တကယ်အကျိုးသက်ရောက်မည်နည်း။
ပထမ ဦး စွာကျွန်ုပ်တို့သည် FNMATCH () function ကို အခြေခံ. အခြေခံကိုနားလည်ရန်လိုအပ်သည်။ fnmatch () function ကို function ကိုပုံစံနှင့်ကိုက်ညီသော string ၏အခြေအနေများကိုနှိုင်းယှဉ်ရန်အသုံးပြုသည်။ ၎င်း၏ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
<span><span><span class="hljs-title function_ invoke__">fnmatch</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$filename</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$flags</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>): </span><span><span class="hljs-keyword">bool</span></span><span>
</span></span>
$ ပုံစံ - ကိုက်ညီမှုအတွက်အသုံးပြုသောပုံစံသည်များသောအားဖြင့် Wildcard အက္ခရာများ ( * ,
$ filename : ကိုက်ညီရန်ဖိုင်အမည်။
$ အလံ - ကိုက်ညီသောအပြုအမူကိုပြုပြင်ရန်အသုံးပြုနိုင်သည့်ကိုက်ညီသောအလံ။
ဥပမာအားဖြင့်:
<span><span><span class="hljs-title function_ invoke__">fnmatch</span></span><span>(</span><span><span class="hljs-string">'*.txt'</span></span><span>, </span><span><span class="hljs-string">'document.txt'</span></span><span>); </span><span><span class="hljs-comment">// ပြန်လာ true,အဘယ်ကြောင့်ဆိုသော်ပွဲအောင်မြင်သောကြောင့်</span></span><span>
</span><span><span class="hljs-title function_ invoke__">fnmatch</span></span><span>(</span><span><span class="hljs-string">'test?.php'</span></span><span>, </span><span><span class="hljs-string">'test1.php'</span></span><span>); </span><span><span class="hljs-comment">// ပြန်လာ true,အဘယ်ကြောင့်ဆိုသော်ပွဲအောင်မြင်သောကြောင့်</span></span><span>
</span></span>
Windows operating system များတွင် FNMATE () fnmatch () သည် filename ကိုက်ညီမှုနှင့်စပ်လျဉ်း။ မခံစားနိုင်ပါ။ NTFS နှင့် Fat32 ကဲ့သို့သော Windows ဖိုင်စနစ်များသည် Case-insensive file name နှင့်ကိုက်ညီသောစည်းမျဉ်းများဖြစ်သောကြောင့်ဖြစ်သည်။ ထို့ကြောင့် Windows စနစ်များတွင် fnmatch () သည် ကိုက်ညီသောဖိုင်အမည်များတွင်ကွဲပြားခြားနားမှုများကိုလျစ်လျူရှုထားသည်။
ဥပမာအားဖြင့်, Windows တွင်ဖိုင်အမည်ကို test.txt , fnmatch ('* ။ TXT ") ရှိလျှင် Windows System သည်ဖိုင်အမည်များကိုအထိခိုက်မခံသောကြောင့် ဖြစ်သည် ။
Linux ပတ် 0 န်းကျင်တွင်ဖိုင်စနစ်များသည်များသောအားဖြင့်စာလုံးအကြီးအသေးအရေးအကြီးဖြစ်စဉ်များ (ext4 file system ကဲ့သို့) ။ ထို့ကြောင့် Linux တွင် FNMATC () ဖိုင်အမည်အရတင်းကြပ်စွာကိုက်ညီလိမ့်မည်။ ဆိုလိုသည်မှာ fnmatch () သည် အမှုကွာခြားချက်များကိုအလိုအလျောက်လျစ်လျူရှုထားခြင်းမရှိပါ။
ဥပမာအားဖြင့်, Linux, FNMATC ('* ။ TXT_TXT', 'test.txt') တွင် Forest.txt ဖိုင်တွဲကိုမကိုက်ညီသောကြောင့် မှားယွင်းစွာ ပြန်လာလိမ့်မည် ။
Windows နှင့် Linux တို့အကြား File System Design တွင်မရှိမဖြစ်လိုအပ်သောကွဲပြားခြားနားမှုများရှိပြီးဖိုင်အမည်ကိုက်ညီမှုနှင့်ကွဲပြားခြားနားမှုများကိုလည်း ဦး တည်စေသည်။
Windows - NTFS (သို့) FAT32 ကဲ့သို့သော Windows မှအသုံးပြုသောဖိုင်စနစ်သည်ပုံမှန်အားဖြင့်မခံစားနိုင်သောဖိုင်အမည်ကိုပုံမှန်အားဖြင့်လက်ခံသည်။ ဆိုလိုသည်မှာ Windows တွင်ဖိုင်အမည်များ Test.txt နှင့် Test.txt ကိုတူညီသောဖိုင်များဟုသတ်မှတ်သည်။
Linux - Ext4 ကဲ့သို့သော Linux အတွက်ဘုံဖိုင်စနစ်, ပုံမှန်အားဖြင့်စာလုံးအကြီးအသေးအရေးကြီးသည်။ Linux တွင်ဖိုင်အမည်များ test.txt နှင့် test.txt သည်လုံးဝကွဲပြားခြားနားသောဖိုင်တွဲနှစ်ခုဖြစ်ပြီး၎င်းတို့၏ကိုက်ညီသောစည်းမျဉ်းများသည်အထိခိုက်မခံသောအထိခိုက်မခံပါ။
FNMATCH () သည် 0 င်းဒိုးအပေါ်ပုံမှန်အားဖြင့်ဖြစ်ရပ်မှန်ကြောင့်ဖြစ်ရပ်မှန်နှင့်စပ်လျဉ်း။ ဖြစ်ရပ်မှန်ကြောင့်ဖြစ်သော်လည်း Linux တွင်စာလုံးအကြီးအသေး, ဖိုင်အမည်များကိုက်ညီသည့်အခါကွဲပြားခြားနားသောအပြုအမူများဖြစ်ပေါ်စေသည်။
ကွဲပြားခြားနားသော operating systems တွင် fnmatch () ကို သုံးသောအခါကြိုတင်ခန့်မှန်းမရသေးသောအပြုအမူကိုရှောင်ရှားရန် developer များကကိုက်ညီသောရလဒ်များအတက္ကသိုလ်များကိုသေချာစေရန်အတွက် developer များပြုလုပ်နိုင်သည်။
Unified ဖိုင်အမည်အမှု - ဖိုင်အမည်များနှင့်မကိုက်ညီမီဖိုင်အမည်များကိုစာလုံးအကြီးများကိုစာလုံးအသေးများသို့မဟုတ်စာလုံးအကြီးများနှင့်တသမတ်တည်းလုပ်ဆောင်ခြင်းကိုပြောင်းလဲခြင်းသို့မဟုတ်မတူညီသောလည်ပတ်မှုစနစ်များတွင်တသမတ်တည်းကိုက်ညီသောအပြုအမူများသို့ပြောင်းလဲခြင်း။ ဥပမာအားဖြင့်, သင်သည်ဖိုင်အမည်များကိုအတင်း ဖိအား () သို့မဟုတ် strutupper () strtoupper () ကို သုံးနိုင်သည်။
<span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strtolower</span></span><span>(</span><span><span class="hljs-string">'*.txt'</span></span><span>);
</span><span><span class="hljs-variable">$filename</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strtolower</span></span><span>(</span><span><span class="hljs-string">'Test.TXT'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">fnmatch</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$filename</span></span><span>); </span><span><span class="hljs-comment">// တသမတ်တည်းအမှုသေချာပါစေ</span></span><span>
</span></span>
အလံ parameters တွေကိုသုံးပါ ။ fnmatch () သည် ကိုက်ညီသောအပြုအမူများကိုထိန်းညှိရန်အသုံးပြုနိုင်သည့်တတိယ parameter ကို အလံများ ပေးသည်။ ဥပမာအားဖြင့်, Caster-managed informating force for in အတင်းရန် FNM_ACACEFORF ကို အလံကိုသုံးပါ။
<span><span><span class="hljs-title function_ invoke__">fnmatch</span></span><span>(</span><span><span class="hljs-string">'*.txt'</span></span><span>, </span><span><span class="hljs-string">'Test.TXT'</span></span><span>, FNM_CASEFOLD); </span><span><span class="hljs-comment">// တည်နေ Windows နှင့် Linux စာလုံးအကြီးအသေးအရေးမကြီးဘူး</span></span><span>
</span></span>
Windows နှင့် Linux တွင် FNMATCH ၏အပြုအမူဆိုင်ရာကွဲပြားမှုသည်အဓိကအားဖြင့် operating system ရှိအမျိုးမျိုးသောဖိုင်စနစ်များ၏ဒီဇိုင်းများကြောင့်ဖြစ်သည်။ Windows File System များသည်များသောအားဖြင့်ဖြစ်ရပ်များကိုမခံစားနိုင်သည့်အရာများဖြစ်ပြီး Linux ဖိုင်စနစ်များသည်များသောအားဖြင့်ဖြစ်ရပ်များကိုအများအားဖြင့်အထိခိုက်မခံပါ။ ဤကွဲပြားခြားနားမှုများသည် operating systems နှစ်ခုလုံးတွင် fnmatch () ကွဲပြားခြားနားသောအပြုအမူများကိုဖြစ်ပေါ်စေသည်။ fnmatch () အလံ parameters တွေကို သုံး. flag parametersters နှင့်စည်းလုံးညီညွတ်သောဖိုင်အမည်အမှုအား အသုံးပြု. developer များက platform platform ရှေ့လိုက်ကိုက်ညီမှုရှိစေရန်သေချာစေနိုင်သည်။