PHP တွင် stream_filter_append () function သည် filter ကို filter တစ်ခုနှင့်ချိတ်ဆက်ရန်ခွင့်ပြုသည်။ ဤဆောင်းပါးသည် Stream_Filter_append () ကို အသုံးပြုနည်း () ရိုးရှင်းသောစာသားပြောင်းခြင်းစစ်ထုတ်ခြင်းများကိုဖန်တီးရန်, စမ်းချောင်းထဲရှိအချက်အလက်များကိုစီမံပြီးစာလုံးအကြီးများပြောင်းလဲခြင်း,
steam_filter_append () သည် PHP built-in function တစ်ခုဖြစ်သည်။ ၎င်းသည် filter တစ်ခုသို့ filter တစ်ခုသို့ဖြည့်စွက်ရန်ခွင့်ပြုသည်။ filter ၏ function သည် Modinification, ပြောင်းလဲခြင်း, ချုံ့ခြင်းစသည်ဖြင့်အချက်အလက်များကိုလုပ်ဆောင်ရန်ဖြစ်သည်။
<span><span><span class="hljs-title function_ invoke__">stream_filter_append</span></span><span>(resource </span><span><span class="hljs-variable">$stream</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$filtername</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$read_write</span></span><span> = STREAM_FILTER_READ, </span><span><span class="hljs-keyword">mixed</span></span><span> </span><span><span class="hljs-variable">$params</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>): </span><span><span class="hljs-keyword">bool</span></span><span>
</span></span>$ stream : filter ကိုပူးတွဲရန်စီးဆင်း။
$ forportame : filter-in filter တစ်ခုသို့မဟုတ်စိတ်ကြိုက် filter တစ်ခုဖြစ်နိုင်သော filter-in filter တစ်ခုဖြစ်နိုင်သည်။
$ Read_write : စမ်းချောင်းကိုဖတ်ရန်သို့မဟုတ်ရေးရန်ရှိမရှိသတ်မှတ်သည်။ Steam_Filter_read သည် Read Stream ကိုကိုယ်စားပြုသည်။
$ params : parameters တွေကို filter သို့ဖြတ်သန်း (optional ကို) ။
ဤတွင်စာသားပြောင်းလဲခြင်းစစ်ထုတ်ခြင်းအတွက်ဥပမာတစ်ခုဖြစ်ပြီးစာသားကိုစာလုံးအကြီးသို့ပြောင်းလဲစေသော filter တစ်ခုကိုအကောင်အထည်ဖော်မည်။
ပထမ ဦး စွာကျွန်ုပ်တို့သည်ရိုးရှင်းသော filter class တစ်ခုကိုဖန်တီးရန်လိုအပ်သည် PHP_USER_FILER CLASS ကိုအမွေဆက်ခံရန်နှင့်၎င်း၏နည်းလမ်းများကိုအကောင်အထည်ဖော်ရန်လိုအပ်သည်။ ဤ filter သည် text မှစာသားကိုစာလုံးအကြီးသို့ပြောင်းလိမ့်မည်။
<span><span><span class="hljs-class"><span class="hljs-keyword">class</span></span></span><span> </span><span><span class="hljs-title">UppercaseFilter</span></span><span> </span><span><span class="hljs-keyword">extends</span></span><span> </span><span><span class="hljs-title">php_user_filter</span></span><span> {
</span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">filter</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$in</span></span></span><span>, </span><span><span class="hljs-variable">$out</span></span><span>, &</span><span><span class="hljs-variable">$consumed</span></span><span>, </span><span><span class="hljs-variable">$closing</span></span><span>) {
</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$bucket</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_bucket_make_writeable</span></span><span>(</span><span><span class="hljs-variable">$in</span></span><span>)) {
</span><span><span class="hljs-comment">// data ကို streams အတွက်စာလုံးအကြီးသို့ပြောင်းပါ</span></span><span>
</span><span><span class="hljs-variable">$bucket</span></span><span>->data = </span><span><span class="hljs-title function_ invoke__">strtoupper</span></span><span>(</span><span><span class="hljs-variable">$bucket</span></span><span>->data);
</span><span><span class="hljs-comment">// ပစ်မှတ်စီးမှကူးပြောင်းဒေတာ output ကို output</span></span><span>
</span><span><span class="hljs-title function_ invoke__">stream_bucket_append</span></span><span>(</span><span><span class="hljs-variable">$out</span></span><span>, </span><span><span class="hljs-variable">$bucket</span></span><span>);
}
</span><span><span class="hljs-keyword">return</span></span><span> PSFS_PASS_ON;
}
}
</span></span>ဤအတန်းတွင် filter () နည်းလမ်းသည်အရေးအကြီးဆုံးအစိတ်အပိုင်းဖြစ်သည်။ ၎င်းသည် input stream ၏အချက်အလက်များကိုလက်ခံပြီး၎င်းကိုစာလုံးကြီးသို့ပြောင်းပါလိမ့်မည်။
ထို့နောက်ကျွန်ုပ်တို့သည် PHP ပတ်ဝန်းကျင်သို့မှတ်ပုံတင်ရန် steam_filter_register () function ကိုအသုံးပြုရန်လိုအပ်သည်။
<span><span><span class="hljs-title function_ invoke__">stream_filter_register</span></span><span>(</span><span><span class="hljs-string">"uppercase"</span></span><span>, </span><span><span class="hljs-string">"UppercaseFilter"</span></span><span>) </span><span><span class="hljs-keyword">or</span></span><span> </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Filter registration failed"</span></span><span>);
</span></span>ဒီအဆင့်ကတဆင့် ExpercaseFileter ကို US Stream အပြောင်းအလဲနဲ့သုံးဖို့ စာလုံးအကြီး လို့ခေါ်တဲ့ filter တစ်ခုအနေနဲ့မှတ်ပုံတင်တယ်။
ကျွန်ုပ်တို့သည်မှတ်ပုံတင်ထားသော filter ကို stream_filter_append မှတဆင့်စီးဆင်းမှုကိုပူးတွဲပါပူးတွဲနိုင်သည်။ ဤတွင်စာသားဖိုင်ကိုမည်သို့ဖတ်ရှုရမည်နှင့်၎င်း၏အကြောင်းအရာများကို stream filter မှတဆင့်စာလုံးအကြီးသို့ပြောင်းရန်ပုံဥပမာတစ်ခုမှာဤတွင်ဖော်ပြထားသည်။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// filter ကိုမှတ်ပုံတင်ပါ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">stream_filter_register</span></span><span>(</span><span><span class="hljs-string">"uppercase"</span></span><span>, </span><span><span class="hljs-string">"UppercaseFilter"</span></span><span>) </span><span><span class="hljs-keyword">or</span></span><span> </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Filter registration failed"</span></span><span>);
</span><span><span class="hljs-comment">// ဖိုင်စီးကိုဖွင့်ပါ</span></span><span>
</span><span><span class="hljs-variable">$stream</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-string">"example.txt"</span></span><span>, </span><span><span class="hljs-string">"r"</span></span><span>);
</span><span><span class="hljs-comment">// custom conding filter ကို file stream သို့ပူးတွဲပါ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">stream_filter_append</span></span><span>(</span><span><span class="hljs-variable">$stream</span></span><span>, </span><span><span class="hljs-string">"uppercase"</span></span><span>, STREAM_FILTER_READ);
</span><span><span class="hljs-comment">// ဖိုင်အကြောင်းအရာနှင့် output ကိုဖတ်ပါ</span></span><span>
</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$line</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fgets</span></span><span>(</span><span><span class="hljs-variable">$stream</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$line</span></span><span>;
}
</span><span><span class="hljs-comment">// ဖိုင်စီးကိုပိတ်ပါ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$stream</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>အထက်ပါဥပမာတွင်ကျွန်ုပ်တို့သည်ဥပမာအမည်ရှိ thange.txt ဖိုင်ကိုဖွင့်ပြီး filter filter ကို file stream သို့ပူးတွဲပါ။ စမ်းချောင်းတွင်အချက်အလက်များကိုကျွန်ုပ်တို့ဖတ်သည့်အခါတိုင်း filter သည်၎င်းကိုစာလုံးအကြီးများသို့အလိုအလျောက်ပြောင်းလဲပြီး၎င်းကိုထုတ်ယူသည်။
ဥပမာအားဖြင့် file ထဲရှိအကြောင်းအရာသည်အောက်ပါအတိုင်းဖြစ်သည်ဟုယူဆပါ -
<span><span>hello world
</span><span><span class="hljs-keyword">this</span></span><span> </span><span><span class="hljs-keyword">is</span></span><span> a test.
</span></span>အထက်ပါကုဒ်ကိုဖွင့်ပြီးနောက်, output ကိုဖြစ်လိမ့်မည်:
<span><span>HELLO WORLD
THIS IS </span><span><span class="hljs-selector-tag">A</span></span><span> TEST.
</span></span>သင်မြင်နိုင်သည့်အတိုင်းစာသားအားလုံးကိုစာလုံးအကြီးများသို့ကူးပြောင်းထားသည်။
stream_filter_append () အတွက်အချက်အလက်များကိုအချိန်မှန်ပြုပြင်ရန်အတွက်အချိန်မှန်ပြုပြင်ခြင်းအောင်မြင်ရန်အတွက်ချောင်းများကိုအလွယ်တကူထည့်နိုင်သည်။ ဒီဆောင်းပါးမှာ input text ကိုစာလုံးအကြီးအဖြစ်ပြောင်းလဲသောရိုးရှင်းသောစာသားပြောင်းလဲခြင်းစစ်ထုတ်ခြင်းများကိုဖန်တီးပါပြီ။ Custom Filters နှင့် Streams ပေါင်းစပ်ခြင်းဖြင့် PHP သည်ရှုပ်ထွေးသောမြင်ကွင်းအမျိုးမျိုးနှင့်တွေ့ဆုံနိုင်သည့်အစွမ်းထက်သောအချက်အလက်များလုပ်ဆောင်နိုင်စွမ်းကိုထောက်ပံ့ပေးသည်။
ဤရိုးရှင်းသောဥပမာနှင့်အတူသင်၏ကိုယ်ပိုင် stream filter ကိုဖန်တီးရန် stream_filter_append () ကိုမည်သို့အသုံးပြုရမည်ကိုသင်နားလည်နိုင်လိမ့်မည်ဟုသင်နားလည်နိုင်သည်။