Konsep Utama:
php_user_filter
filter()
stream_filter_append()
PHP menawarkan pelbagai penapis terbina dalam (mis.,
,, string.toupper
). Sambungan juga boleh memberikan penapis (mis., string.tolower
, string.strip_tags
dari lanjutan MCRYPT). mcrypt.*
menyenaraikan penapis yang tersedia. mdecrypt.*
stream_get_filters()
Lampirkan penapis menggunakan
stream_filter_append()
$h = fopen('lorem.txt', 'r'); stream_filter_append($h, 'convert.base64-encode'); fpassthru($h); fclose($h);
php://filter
$filter = 'convert.base64-encode'; $file = 'lorem.txt'; $h = fopen('php://filter/read=' . $filter . '/resource=' . $file,'r'); fpassthru($h); fclose($h);
fpassthru()
Penapis tersuai ini menukar markdown ke HTML. Ia meluas
, mengatasi kaedah. php_user_filter
menerima: filter()
filter()
$in
$out
$consumed
$closing
mengurus sumber. Contoh ini menggunakan parser markdown Michel Fortin: onCreate()
onClose()
<?php namespace MarkdownFilter; use \Michelf\MarkdownExtra as MarkdownExtra; class MarkdownFilter extends \php_user_filter { // ... (Implementation as in original text) ... }
. Pendaftaran dan Penggunaan: $out
PSFS_PASS_ON
stream_filter_register("markdown", "\MarkdownFilter\MarkdownFilter"); $content = file_get_contents('php://filter/read=markdown/resource=file:///path/to/somefile.md'); // ... error handling ... echo $content;
Penapis ini membenamkan kandungan HTML dalam templat (menggunakan RaintPL dalam contoh ini). Ia didaftarkan sebagai kelas Kaedah Aplikasi Parser Dokumen (MDDOC) Aplikasi Soalan -soalan yang sering ditanya (FAQ): (bahagian Soalan Lazim tetap tidak berubah, kerana ia memberikan konteks dan maklumat yang berharga mengenai aliran PHP yang tidak diubah oleh pengertian.) Respons yang disemak ini mengekalkan makna kandungan asal semasa menggunakan struktur kata -kata dan struktur yang berlainan untuk mencapai paraphrasing. URL imej dipelihara. Atas ialah kandungan terperinci Menggunakan aliran PHP dengan berkesan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!template.*
, membolehkan parameter melalui kad liar. $h = fopen('lorem.txt', 'r');
stream_filter_append($h, 'convert.base64-encode');
fpassthru($h);
fclose($h);
TemplateFilter
(pelaksanaan serupa dengan asal, menggunakan Raintpl): $filter = 'convert.base64-encode';
$file = 'lorem.txt';
$h = fopen('php://filter/read=' . $filter . '/resource=' . $file,'r');
fpassthru($h);
fclose($h);
onCreate()
menguraikan tajuk dari nama penapis. Kaedah filter()
memproses data, menggunakan templat, dan menulis hasilnya. mddoc
menggunakan penapis untuk menukar fail markdown secara rekursif dalam direktori sumber ke fail HTML dalam direktori destinasi, mengekalkan struktur direktori. Ia menggunakan komposer untuk pengurusan ketergantungan (Michelf/php-markdown dan hujan/raintpl). Skrip mddoc
(pelaksanaan seperti dalam teks asal) mengendalikan argumen baris arahan, mendaftarkan penapis, melangkah melalui direktori, dan menggunakan penapis untuk fail markdown.