Ob_start - Paganahin ang output buffering. Paggamit ng ob_start kapag sumusuporta sa mga proyekto ng php Mahina ang pagsisimula ng php sa paghahanap

Simulan ang paghahanap ay isang browser hijacker, na na-promote sa pamamagitan ng iba pang mga libreng pag-download, at kapag na-install ay babaguhin nito ang homepage ng iyong browser sa start-search.com search.yahoo.com.

Ang homepage ng start-search.com ay magpapakita ng mga advertisement at mga naka-sponsor na link sa iyong mga resulta ng paghahanap, at maaaring mangolekta ng mga termino para sa paghahanap mula sa iyong mga query sa paghahanap. Ang pag-hijack ng start-search.com ay ginagamit upang palakihin ang kita sa advertising, tulad ng paggamit ng blackhat SEO, upang palakihin ang ranggo ng pahina ng isang site sa mga resulta ng paghahanap.

Simulan ang Paghahanap, ito ay teknikal na hindi isang virus, ngunit nagpapakita ito ng maraming malisyosong katangian, tulad ng mga kakayahan ng rootkit na kumabit nang malalim sa operating system, pag-hijack ng browser, at sa pangkalahatan ay nakakasagabal lamang sa karanasan ng user. Karaniwang tinutukoy ito ng industriya bilang "PUP," o potensyal na hindi gustong programa.
Ang Start Search ay suportado ng ad (maaaring makakita ang mga user ng karagdagang banner, paghahanap, pop-up, pop-under, interstitial at in-text link advertisement) cross web browser plugin para sa Internet Explorer (BHO) at Firefox/Chrome (plugin) at ibinahagi sa pamamagitan ng iba't ibang mga platform ng monetization sa panahon ng pag-install. Kasama sa extension ng browser ang iba't ibang feature na magbabago sa default o custom na setting ng browser kabilang ang home page, mga setting ng paghahanap at sa ilang mga kaso, babaguhin ang limitasyon ng oras ng pagkarga ng Internet Explorer, maglagay ng lock file sa loob ng Firefox upang maiwasan ang kakumpitensyang software na baguhin ang mga setting nito. pati na rin huwag paganahin ang Patakaran sa Seguridad ng Nilalaman ng browser upang payagan ang cross site scripting ng plugin.

Nakuha ang Start Search homepage sa iyong computer pagkatapos mong mag-install ng freeware software (video recording/streaming, download-managers o PDF creator) na nag-bundle sa kanilang pag-install ng hijacker ng browser na ito.
Halimbawa, kapag nag-install ka ng VPlay, sasang-ayon ka rin na palitan ang homepage ng iyong browser sa start-search.com at default na search engine sa search.yahoo.com


Gayunpaman kapag na-uninstall mo ang VPlay mula sa iyong computer, hindi maibabalik ang mga default na setting ng iyong web browser. Nangangahulugan ito na kailangan mong alisin nang manu-mano ang start-search.com homepage mula sa iyong paboritong web browser.

Dapat mo laging bigyang pansin kapag nag-i-install ng software dahil madalas, ang isang software installer ay may kasamang mga opsyonal na pag-install, gaya ng start-search.com browser hijacker na ito. Maging maingat kung ano ang sinasang-ayunan mong i-install.
Palaging mag-opt para sa custom na pag-install at alisin sa pagkakapili ang anumang hindi pamilyar, lalo na ang opsyonal na software na hindi mo gustong i-download at i-install sa unang lugar. Walang sinasabi na hindi ka dapat mag-install ng software na hindi mo pinagkakatiwalaan.

Paano alisin ang start-search.com (Gabay sa Pag-alis ng Virus)

Ang pahinang ito ay isang komprehensibong gabay, na mag-aalis ng start-search.com mula sa iyong Internet Explorer, Firefox at Google Chrome.
Mangyaring gawin ang lahat ng mga hakbang sa tamang pagkakasunud-sunod. Kung mayroon kang anumang mga katanungan o pagdududa sa anumang punto, TUMIGIL at humingi ng tulong sa amin.




HAKBANG 1: I-uninstall ang start-search.com na mga nakakahamak na program mula sa iyong computer

Sa unang hakbang na ito, susubukan naming tukuyin at alisin ang anumang nakakahamak na program na maaaring naka-install sa iyong computer.

Kung nagkakaroon ka ng mga isyu habang sinusubukang i-uninstall ang start-search.com program, maaari mong gamitin upang ganap na alisin ang hindi gustong program na ito mula sa iyong makina.

HAKBANG 2: Alisin ang start-search.com virus mula sa Internet Explorer, Firefox at Google Chrome

Alisin ang start-search.com virus mula sa Internet Explorer

Maaari mong i-reset ang mga setting ng Internet Explorer upang ibalik ang mga ito sa estado kung saan sila noong unang na-install ang Internet Explorer sa iyong PC.

Alisin ang start-search.com virus mula sa Mozilla Firefox

Kung nagkakaproblema ka sa Firefox, makakatulong ang pag-reset nito. Nagtatampok ang reset fix ng maraming isyu sa pamamagitan ng pagpapanumbalik ng Firefox sa factory default na estado nito habang sine-save ang iyong mahahalagang impormasyon tulad ng mga bookmark, password, impormasyon sa auto-fill ng web form, kasaysayan ng pagba-browse at mga bukas na tab.

Tandaan: Ang iyong lumang profile sa Firefox ay ilalagay sa iyong desktop sa isang folder na pinangalanang “ Lumang Data ng Firefox“. Kung hindi naayos ng pag-reset ang iyong problema maaari mong ibalik ang ilan sa impormasyong hindi na-save sa pamamagitan ng pagkopya ng mga file sa bagong profile na ginawa. Kung hindi mo na kailangan ang folder na ito, dapat mo itong tanggalin dahil naglalaman ito ng sensitibong impormasyon.

Alisin ang start-search.com virus mula sa Google Chrome

HAKBANG 3: Alisin ang start-search.com browser hijacker gamit ang AdwCleaner

Ii-scan ng AdwCleaner utility ang iyong computer at web browser para sa “start-search.com” na mga nakakahamak na file, mga extension ng browser at mga registry key, na maaaring na-install sa iyong computer nang hindi mo nalalaman.

HAKBANG 4: Alisin ang start-search.com virus mula sa iyong computer gamit ang Malwarebytes Anti-Malware Free

Gumagamit ang Malwarebytes Anti-Malware Free na teknolohiyang nangunguna sa industriya para makita at alisin ang lahat ng bakas ng malware, kabilang ang mga worm, Trojan, rootkit, rogue, dialer, spyware, at higit pa.
Mahalagang tandaan na gumagana nang maayos ang Malwarebytes Anti-Malware at dapat tumakbo kasama ng antivirus software nang walang mga salungatan.

  1. Maaari mong i-download i-download ang Malwarebytes Anti-Malware mula sa link sa ibaba.
    (Ang link na ito ay magbubukas ng bagong web page kung saan maaari mong i-download ang Malwarebytes Anti-Malware Free)
  2. Kapag na-download, isara ang lahat ng mga programa, pagkatapos ay i-double click ang icon sa iyong desktop na pinangalanang " mbam-setup-consumer-2.00.xx” upang simulan ang pag-install ng Malwarebytes Anti-Malware.

    Maaaring ipakita sa iyo ang dialog ng User Account Control na nagtatanong sa iyo kung gusto mong patakbuhin ang file na ito. Kung nangyari ito, dapat mong i-click ang " Oo” upang magpatuloy sa pag-install.
  3. Kapag nagsimula ang pag-install, makikita mo ang na gagabay sa iyo sa proseso ng pag-install.


    Upang i-install ang Malwarebytes Anti-Malware sa iyong makina, patuloy na sundin ang mga senyas sa pamamagitan ng pag-click sa “ Susunod” button.

  4. Kapag na-install na, awtomatikong magsisimula ang Malwarebytes Anti-Malware at makakakita ka ng mensaheng nagsasaad na dapat mong i-update ang program, at hindi kailanman naipatakbo ang pag-scan sa iyong system. Upang simulan ang isang pag-scan ng system maaari kang mag-click sa " Ayusin Ngayon” button.


    Bilang kahalili, maaari mong i-click ang “ Scan"tab at piliin" Pagbabanta Scan", pagkatapos ay i-click ang "I-scan ngayon" pindutan.

  5. Susuriin na ngayon ng Malwarebytes Anti-Malware ang mga update, at kung mayroon man, kakailanganin mong mag-click sa “ Update Ngayon” button.

  6. Magsisimula na ngayon ang Malwarebytes Anti-Malware na i-scan ang iyong computer para sa start-search.com virus. Kapag nag-scan ang Malwarebytes Anti-Malware ito ay magiging hitsura ng imahe sa ibaba.

  7. Kapag nakumpleto na ang pag-scan, ipapakita sa iyo ang isang screen na nagpapakita sa iyo ng mga impeksyon sa malware na nakita ng Anti-Malware ng Malwarebytes. Upang alisin ang mga nakakahamak na programa na natagpuan ng Malwarebytes Anti-malware, mag-click sa " Quarantine Lahat” button, at pagkatapos ay i-click ang “ Mag-apply Ngayon” button.


    Pakitandaan na ang mga impeksyong natagpuan ay maaaring iba kaysa sa ipinapakita sa larawan.
  8. Ikukuwarentina na ngayon ng Malwarebytes Anti-Malware ang lahat ng malisyosong file at registry key na nakita nito. Kapag nag-aalis ng mga file, maaaring mangailangan ng reboot ang Malwarebytes Anti-Malware upang maalis ang ilan sa mga ito. Kung magpapakita ito ng mensaheng nagsasaad na kailangan nitong i-reboot ang iyong computer, mangyaring payagan itong gawin ito.


    Pagkatapos mag-restart ang iyong computer, dapat mong buksan ang Malwarebytes Anti-Malware at magsagawa ng isa pang "Threat Scan" na pag-scan upang i-verify na wala nang natitirang mga banta.

HAKBANG 5: I-double check para sa impeksyon sa start-search.com sa HitmanPro

Ang HitmanPro ay isang scanner ng pangalawang opinyon, na idinisenyo upang iligtas ang iyong computer mula sa malware (mga virus, trojan, rootkit, atbp.) na nahawahan ang iyong computer sa kabila ng lahat ng mga hakbang sa seguridad na iyong ginawa (tulad ng anti virus software, mga firewall, atbp.). Ang HitmanPro ay idinisenyo upang gumana sa tabi ng mga kasalukuyang programa ng seguridad nang walang anumang mga salungatan. Mabilis nitong ini-scan ang computer (wala pang 5 minuto) at hindi pinapabagal ang computer.

Panimula

Ang Balsa system, batay sa Xubuntu 10.04 (lucid) na bersyon ng Linux, ay magagamit bilang beta software. Ang pahinang ito ay nagsasabi sa iyo kung ano ang kailangan mong i-download at patakbuhin ang Balsa at pagkatapos ay tumuturo sa mga tagubilin kung paano gawin iyon.

Gumagamit si Balsa ng SD card para tumakbo sa isang computer. Ang SD card ay kailangang magkaroon ng Balsa system na ilagay dito bago ito magamit upang patakbuhin ang Balsa.

Maaari kang gumawa ng Balsa SD card sa isang computer at patakbuhin ito sa ibang computer. Ang computer kung saan ka gumagawa nito ay hindi kailangang magpatakbo ng Balsa mismo.

Ano ang Kailangan Mo Para Magpatakbo ng Balsa

Upang patakbuhin ang Balsa, kakailanganin mo ang sumusunod:

Para makagawa ng Balsa SD card, ang computer kung saan mo ito ginagawa ay mangangailangan ng 5 o 9 gigabytes na espasyo habang ginagawa ang card.

Isang Paalala Tungkol sa Mga SD Card Reader

Sa ilang mas lumang mga laptop, ang SD reader ay hindi makakahawak ng 4 o 8 gigabyte na SD card. Ang iba pang mga SD card reader na ginagamit ng ilang Dell Computer ay hindi gumagana sa Balsa system. Sa alinman sa mga kasong ito, maaaring patakbuhin ang Balsa sa isang hiwalay na USB SD card reader.

Ang mga Balsa SD card ay nasa 4 o 8 gigabyte na bersyon. Maaaring gawin ang alinmang bersyon sa Windows o Linux machine. Parehong ginagamit ng Windows at Linux ang parehong na-download na file para sa card, at ang card na binuo ay magiging magkapareho sa isa sa kabilang system. Pumili ng isa sa mga ito.

Nagbibigay ang PHP ng ilang mga function na naghahanap ng isang string sa loob ng isa pa. Ibinabalik ng ilan ang lokasyon ng nahanap na string (strpos , strrpos at mga kaugnay), at ibinalik ang bahagi ng orihinal na string (strstr at strrchr). Ang mga function ng paghahanap ay nagbabalik ng false kung ang string na iyong hinahanap ay hindi matatagpuan sa orihinal.

Kung ang iyong layunin ay upang matukoy kung ang isang string ay umiiral sa loob ng isa pa, ang pinaka mahusay na opsyon ay strpos .

strpos

Hinahanap ng strpos function ang unang string argument nito para sa pangalawa nito at ibinabalik ang zero-based na index na lokasyon ng unang tugma sa loob ng string, o false kung hindi ito matagpuan. Ang sumusunod na halimbawa ay nagpapakita ng:

$str = ; // hanapin ang unang paglitaw ng "kailangan" sa loob ng $str$pos = strpos($str, "kailangan"); // uri ng display at halaga ng $pos var_dump ($pos); // int(3)

Bagama't ipinakita namin ang resulta gamit ang var_dump sa itaas, ang isang tipikal na pagsusuri ng return value para sa strpos ay isinasagawa tulad ng sumusunod:

// kung paano siyasatin ang strpos return value ($pos) if ( $pos !== false ) ( // if search string found echo "nahanap ito sa lokasyon $pos" ; ) else (echo "not found." ; )

Siguraduhing gamitin ang === o !== operator upang ihambing ang strpos function"s return value sa false . Kung ang substring ay matatagpuan sa simula ng string, strpos ay magbabalik ng 0 , na ang == o != operator magko-convert sa false.

Maaari mong tukuyin ang isang offset upang simulan ang paghahanap ng isang tinukoy na bilang ng mga character mula sa simula ng string, tulad ng ipinapakita ng halimbawang ito:

/* strpos arguments: * subject string (aka haystack), search string (needle), offset (opsyonal) */ // simulan ang paghahanap para sa "need" mula sa character 10 sa $str$pos = strpos ($str , "kailangan" , 10 ); // 20

Kapag sinimulan ang paghahanap mula sa character 10, ang resulta ay 20, ang index na lokasyon ng simula ng salitang needle.

strrpos

Hinahanap ng strrpos function ang posisyon ng huling paglitaw ng isang substring sa isang string:

// halimbawang string na gagamitin para sa mga paghahanap$str = "Kailangan nating hanapin ang karayom ​​sa dayami."; // hanapin ang lokasyon ng huling paglitaw ng "kailangan" sa $str$pos = strrpos ($str , "kailangan" ); // 20

Ang strrpos function ay nagbibigay din ng opsyonal na offset na parameter na maaaring maging positibo o negatibo. Kung positibo ang offset, ang bilang ng mga character sa simula ng string ay hindi isasama sa paghahanap. Isaalang-alang ang sumusunod na halimbawa:

// hanapin mula sa kanan ang "Kami" hindi kasama ang unang 3 character$pos = strrpos ($str , "Kami" , 3 ); var_dump ($pos); //bool(false)

Mali ang resulta dahil hindi nahanap ang "Kami" kapag hindi kasama sa paghahanap ang unang tatlong character.

Kung negatibo ang offset, ang maraming character sa dulo ng string ay hindi kasama sa paghahanap. Nagpapakita kami sa dalawang paghahanap na tumutukoy sa negatibong offset:

// maghanap mula sa kanan para sa "hay" hindi kasama ang huling 5 character$pos = strrpos ($str , "hay" , - 5 ); // int(34) // maghanap mula sa kanan hindi kasama ang huling 10 character$pos = strrpos ($str , "hay" , - 10 ); //bool(false)

Ang huling resulta sa itaas ay mali dahil ang "hay" ay hindi nahanap kapag ang paghahanap ay hindi kasama ang huling 10 mga character.

Pansinin na ang return value ng strrpos function ay nagbibigay ng lokasyon mula sa simula ng string, kahit na ang paghahanap ay nagsisimula sa kanan.

stripos at stripos

Ang mga strpos at strrpos function ay nagsasagawa ng mga case-sensitive na paghahanap. Nagbibigay ang PHP ng mga function ng stripos at srripos upang magsagawa ng mga case-insensitive na paghahanap. Gumagana ang mga ito tulad ng kanilang mga katumbas na case-sensitive:

// halimbawang string na gagamitin para sa mga paghahanap$str = "Kailangan nating hanapin ang karayom ​​sa dayami."; // gawin ang case-insensitive na paghahanap para sa "kami"$pos = stripos($str, "kami"); // int(0) // gawin ang case-insensitive na paghahanap mula sa kanan para sa "Kailangan"$pos = strripos($str, "Kailangan"); // int(20)

Ang case-insensitive na paghahanap para sa "kami" ay nagreresulta sa 0 , na nagsasaad na ito ay natagpuan sa simula ng string kung saan kami naghahanap. Ang case-insensitive na paghahanap para sa "Kailangan" mula sa kanan (gamit ang strripos), ay matatagpuan ito sa lokasyon 20 .

strstr

Hinahanap ng strstr function ang unang string argument para sa pangalawa. Kung ang pangalawa ay matatagpuan sa loob ng una, ibinabalik ng strstr ang bahagi ng orihinal na string simula sa unang nahanap na paglitaw hanggang sa dulo ng string.

// halimbawa ng string $str = "Kailangan nating hanapin ang karayom ​​sa dayami."; // search for "the" in $str $newstr = strstr ($str , "the" ); var_dump ($newstr) ; // string(27) "ang karayom ​​sa haystack."

Ibinabalik ng strstr function ang unang "ang" nahanap nito, kasama ang natitirang bahagi ng orihinal na string.

Kung ipapasa mo ang true bilang ikatlong argumento sa strstr , ang bahagi ng orihinal na string dati ibinalik ang nahanap na string:

// pass true para ibalik ang bahagi ng $str bago ang "the"$newstr = strstr ($str , "the" , true ); var_dump ($newstr) ; // string(16) "Kailangan nating hanapin "

Sa pagkakataong ito, ibinabalik ng strstr function ang lahat bago ang unang "the" sa string.

Nagbibigay din ang PHP ng stristr function na eksaktong kapareho ng strstr maliban na ito ay nagsasagawa ng case-insensitive na paghahanap.

strhrchr

Hinahanap ng strrchr function ang unang string argument mula sa kanan para sa character na tinukoy namin sa pangalawang argumento. Ibinabalik ng function ang bahagi ng string mula sa lokasyon ng nahanap na instance ng character na iyon hanggang sa dulo ng string:

// halimbawa ng string $str = "Kailangan nating hanapin ang karayom ​​sa dayami."; // maghanap mula sa kanan para sa "s" sa $str$newstr = strstr ($str , "s" ); var_dump ($newstr) ; // string(6) "stack."

Pansinin na hindi tulad ng strstr , kung ang pangalawang argumento ay binubuo ng maramihang mga character, ang una lang ang gagamitin:

// pagsubok gamit ang multi-character na pangalawang argumento$newstr = strrchr ($str , "ang" ); var_dump ($newstr) ; // string(5) "tack."

Sa halip na ibalik ang "the haystack" , ang strrchr function ay nagbabalik ng "tack" , na inilalapat lamang ang unang titik ng pangalawang argumento sa paghahanap.

Hello, Habr!

Ngayon gusto kong ipakilala ang mga newbie webmaster sa iba't ibang maayos na paraan upang magamit ang output buffering sa PHP. Ang mga bihasang webmaster ay malamang na hindi makahanap ng anumang bagay na kapaki-pakinabang dito. Bagaman - sino ang nakakaalam?

Tulad ng alam mo, ang output buffering sa php ay kinokontrol ng isang hanay ng mga function na nagsisimula sa "ob_". Ang pinakamahalaga sa kanila ay ang ob_start. Kapag inilunsad, kinokolekta nito ang kasunod na output, iyon ay, lahat ng uri ng print(), echo, atbp., na pagkatapos ay ibibigay sa bisita sa anyo ng isang html na pahina. At kung nagsimula kaming mag-buffer bago mag-output, sa wakas ay makakagawa kami ng isang bagay sa halos handa na pahinang ito.


Halimbawa, gusto naming i-filter ang lahat ng mga link sa mga panlabas na site.

Ang aming forum, na kasingtanda ng palakol ng Australopithecus, ay dinudumog ng napakaraming spammer, na umaakit sa mga bisita sa mga lugar na puno ng kahalayan, mga bandido na may isang sandata at kaguluhan sa pulitika. Maaari naming gamitin ang js na may pagsubaybay, ngunit sa halip ay gusto naming baguhin ang lahat ng mga link na ito:

"http://blackjack-hookers.com" => "http://myoldforum.ru/redirect.php?url=blackjack-hookers.com"

Ang pamamaraan ay maaaring hindi ang pinaka-epektibo, ngunit ito ay epektibo. Sumulat kami ng redirect.php na may isang filter at isang blacklist, at ngayon kailangan naming i-convert ang lahat ng mga link sa libu-libong mga pahina ng forum. Gamit ang ob_start at ilang regular na expression, magagawa natin ito sa ilang linya lang:

Function f_callback($buffer)( $buffer = preg_replace("#http://(www.)?myoldforum\.ru/#","/",$buffer); $buffer = preg_replace("#href="http ://([^"]*)"#","#href="/redirect\.php\?url=$1",$buffer); return $buffer; ) ob_start(f_callback);

Ngayon, sa pamamagitan ng pagsasama ng code na ito sa simula ng index.php, o isa pang file na ina-access ng server kapag tumitingin ng mga pahina, makukuha namin ang kailangan namin.

Sa pamamagitan ng pagbabago ng nilalaman sa ganitong paraan, hindi kami nalilimitahan ng mga pamamaraan ng makina. Ito ay maaaring maging lubos na mahalaga. Halimbawa, maaari kang magdagdag ng isang plugin:

Function generate_plugin() ( /*generate something*/ ) function f_callback($buffer)( /*...*/ $buffer = str_replace ("",generate_plugin(),$buffer); /*...*/ return $buffer; ) ob_start("f_callback");

Ngayon, kung saan kami nagdagdag sa nilalaman, lalabas ang gusto namin. Ang isa sa mga application ay ang paglalagay ng js widget sa isang pahina ng website. Halimbawa, ang mga mapa ng Yandex. Kadalasan ito ay hindi mahirap, ngunit kung minsan ang isang mahinang nakasulat na editor ng pahina ng website ay nakakatakas sa mga quote at kulot na braces, na sinisira ang widget. Tulad ng nakikita mo, ang problemang ito ay madaling malutas.

Ang hanay ng mga tool sa PHP para sa pagtatrabaho sa output buffer ay mayaman, at hindi limitado sa ob_start lang. Ang mga pamamaraan na inilarawan sa itaas ay sa ilang mga kaso ay sobrang masinsinang mapagkukunan at masalimuot, dahil gumagana ang mga ito sa buong pahina. Maaari naming iproseso ang bahagi lamang nito sa pamamagitan ng paggawa ng wrapper sa template sa paligid ng pagbuo ng isang bagay na hindi namin gustong pasukin, ngunit tiyak na kailangang ayusin iyon:

(GENERATE BIG CRAZY BAGAY)

Malamang na napansin mo na ang lahat ng mga pariralang ito: "Ayokong pumasok dito," "kasing sinaunang upuan ng tyrannosaurus," "isang baluktot na nakasulat na editor"... Sa isang perpektong mundo, ang mga shell sa paligid ng output buffer ay hindi kailangan. Lahat ng maaaring gawin sa ob_start ay maaaring gawin nang wala ito. Ang diskarteng ito kung minsan ay nagpapakilala ng kalituhan sa code ng proyekto; nakikita lamang ng marami ang kahulugan nito sa pagpapadala ng output sa ob_gzhandler para sa compression, at itinuturing na mapanganib ang paggamit nito sa ibang mga kaso. Ngunit madalas na hindi mo magagawa nang walang kontrol sa output.

Lalo na kung ayaw mong maghukay ng malalim.

(PHP 4, PHP 5, PHP 7)

ob_start — Paganahin ang output buffering

Paglalarawan

Bool ob_start ([ matatawag$output_callback = WALA [, int $chunk_size = 0 [, int $flags = PHP_OUTPUT_HANDLER_STDFLAGS ]]])

Ang function na ito ay nagbibigay-daan sa output buffering. Kung aktibo ang buffering ng output, hindi ipinapadala ang output ng script (maliban sa mga header), ngunit iniimbak sa isang panloob na buffer.

Ang mga nilalaman ng panloob na buffer na ito ay maaaring kopyahin sa isang string variable gamit ob_get_contents(). Upang i-output ang mga nilalaman ng panloob na buffer na dapat mong gamitin ob_end_flush(). Bilang kahalili maaari mong gamitin ob_end_clean() upang sirain ang mga nilalaman ng buffer.

Pansin

Binabago ng ilang web server (halimbawa Apache) ang gumaganang direktoryo ng script kapag tinawag ang callback function. Maaari mo itong ibalik gamit chdir(dirname($_SERVER["SCRIPT_FILENAME")])) sa callback function.

Ang mga buffer ng output ay itinutulak sa stack, ibig sabihin, pinapayagan ang mga tawag ob_start() pagkatapos tumawag sa isa pang aktibo ob_start(). Sa kasong ito kinakailangan na tumawag ob_end_flush() ang angkop na bilang ng beses. Kung maramihang mga function ng callback ay aktibo, ang output ay sinasala nang sunud-sunod para sa bawat isa sa kanila sa nesting order.

Listahan ng mga parameter

Maaaring tukuyin ang isang opsyonal na parameter ng output_callback. Ang function na ito ay tumatagal ng isang string bilang isang argumento at dapat ding magbalik ng isang string. Ito ay tinatawag kapag ang isang pag-reset (ipadala) o paglilinis (gamit ob_flush(), ob_clean() o katulad na mga function) o kung ang output buffer ay na-flush sa browser sa dulo ng kahilingan. Kapag tinawag ang function na output_callback, natatanggap nito ang mga nilalaman ng buffer at dapat ibalik ang na-update na mga nilalaman para sa output buffer na ipapadala sa browser. Kung ang output_callback ay hindi wastong function, babalik ang dokumentadong function MALI. Paglalarawan ng function para sa parameter na ito:

String handler (string $buffer [, int $phase ])

Buffer Mga nilalaman ng output buffer. yugto Bit mask ng mga constants PHP_OUTPUT_HANDLER_*.

Kung babalik ang output_callback MALI, pagkatapos ay ipapadala ang orihinal na impormasyon sa browser nang walang mga pagbabago.

Ang parameter na output_callback ay maaaring balewalain sa pamamagitan ng pagpasa ng halaga WALA.

ob_end_clean(), ob_end_flush(), ob_clean(), ob_flush() At ob_start() hindi matatawagan mula sa mga function ng callback, dahil hindi mahuhulaan ang kanilang pag-uugali. Kung gusto mong tanggalin ang mga nilalaman ng buffer, pagkatapos ay ibalik ang "" (isang walang laman na string) mula sa callback function. Hindi ka rin makakatawag ng mga function print_r($expression, true) o highlight_file($filename, true) mula sa output buffering callback function.

Magkomento:

Sa PHP 4.0.4 ang function ob_gzhandler() ay ipinakilala upang gawing mas madaling magpadala ng data na naka-encode ng gz sa mga web browser na sumusuporta sa mga naka-compress na web page. ob_gzhandler() tinutukoy ang uri ng pag-encode ng nilalaman na tinatanggap ng browser at ibinabalik ang output nang naaayon.

chunk_size

Kung ang opsyonal na parameter na chunk_size ay naipasa, ang buffer ay i-flush pagkatapos ng anumang output na mas malaki sa o katumbas ng chunk_size sa laki. Default na halaga 0 nangangahulugan na ang output function ay tatawagin kapag ang buffer ay sarado.

Bago ang PHP 5.4.0, halaga 1 ay isang espesyal na halaga na nagtatakda ng parameter chunk_size sa 4096.

Ang parameter ng mga flag ay isang bitmask na kumokontrol sa mga operasyon na maaaring isagawa sa buffer ng output. Bilang default, pinapayagan nito ang output buffer na ma-flush, ma-flush, at matanggal, na kapareho ng | | , o PHP_OUTPUT_HANDLER_STDFLAGS bilang pagdadaglat para sa kumbinasyong ito.

Kinokontrol ng bawat flag ang access sa isang hanay ng mga function, tulad ng inilarawan sa ibaba:

pare-pareho Mga pag-andar
PHP_OUTPUT_HANDLER_CLEANABLE ob_clean(), ob_end_clean(), At ob_get_clean().
PHP_OUTPUT_HANDLER_FLUSHABLE ob_end_flush(), ob_flush(), At ob_get_flush().
PHP_OUTPUT_HANDLER_REMOVABLE ob_end_clean(), ob_end_flush(), At ob_get_flush().

Ibalik ang mga halaga

Nagbabalik TOTOO sa matagumpay na pagkumpleto o MALI sa kaso ng isang error.

Listahan ng mga pagbabago

Bersyon Paglalarawan
7.0.0 Kung ob_start() na ginagamit sa loob ng output buffer callback function, ang function na ito ay hindi na bubuo ng error E_ERROR, ngunit sa halip ay tatawag E_RECOVERABLE_ERROR, na nagpapahintulot sa mga tagapangasiwa ng error ng third party na mahuli ito.
5.4.0 Pangatlong parameter ob_start() binago mula sa boolean ( boolean) ng burahin na parameter (na, kapag nakatakda sa MALI pinigilan ang buffer na matanggal hanggang sa makumpleto ang script) sa isang integer ( integer) parameter ng mga flag. Sa kasamaang palad, nangangahulugan ito ng hindi pagkakatugma ng API para sa code na gumamit ng ikatlong parameter bago ang PHP 5.4.0. Tingnan ang halimbawa ng mga flag para maunawaan kung paano gamitin ang code para magkatugma ito sa parehong bersyon.
5.4.0 Parameter chunk_size, naka-install sa 1 , ngayon ay nagreresulta sa 1 byte na nagiging output sa output buffer.
4.3.2 Babalik ang function MALI kung sakaling hindi maipatupad ang output_callback.

Mga halimbawa

Halimbawa #1 Halimbawa ng function ng callback na tinukoy ng user

Function callback ($buffer)
{
// palitan ang lahat ng mansanas ng mga dalandan
return (str_replace("mansanas", "mga dalandan", $buffer));
}

Ob_start("callback");

?>


Ito ay tulad ng paghahambing ng mansanas at dalandan.






ob_end_flush();