نحو بیان منظم

هنگامی که مفسر PHP یک فایل را پردازش می کند، به دنبال برچسب ها می گردد، که نشان می دهد کد PHP کجا شروع و به پایان می رسد. هر چیزی که خارج از یک جفت تگ شروع و پایان باشد توسط مفسر نادیده گرفته می شود (یعنی به سادگی به وب سرور همانطور که هست داده می شود). به عنوان مثال، فایل ارسال شده به مفسر PHP دارای کد زیر است:

این مورد توسط مترجم نادیده گرفته می شود و به سادگی به همان شکلی که هست، ابتدا به وب سرور داده می شود، که به نوبه خود به مرورگر می دهد.

این نیز توسط مترجم نادیده گرفته می شود و به سادگی به وب سرور همانطور که هست منتقل می شود.

اگر فایل فقط حاوی کد PHP است یا در انتهای فایل قرار دارد، یعنی چیزی بعد از آن وجود ندارد، ترجیحاً تگ بسته شدن حذف می شود (مشخص نشده است). این به جلوگیری از اضافه کردن کاراکترهای فضای خالی تصادفی بعد از تگ پایان PHP کمک می کند، که می تواند اثرات ناخواسته ایجاد کند.

PHP همچنین اجازه می دهد تا یک برچسب باز کردن کوتاه

کاراکترهای فضای خالی

در کدهای پی اچ پی، می توانید از کاراکترهای فضای خالی استفاده کنید: فاصله ها، تب ها و خطوط شکست. تعداد کاراکترهای فضای خالی محدود نیست و به ترجیحات برنامه نویس بستگی دارد که هدف اصلی آن ایجاد یک متن برنامه (کد منبع) واضح و خوانا است.

مثال زیر کد PHP را نشان می دهد که از کاراکترهای فضای خالی استفاده می کند:

کد مثال می‌توانست روی یک خط بدون استفاده از کاراکترهای فضای خالی نوشته شود، اما چنین کدی کمتر قابل خواندن است:

آخرین به روز رسانی در 27 نوامبر 2019، 07:10:59 (UTC/GMT +8 ساعت)

PHP باز و بسته کردن نحو برچسب ها

چهار جفت مختلف تگ باز و بسته وجود دارد که می توان از آنها در php استفاده کرد. در اینجا لیست برچسب ها آمده است.

  • نحو پیش فرض
  • برچسب های باز کوتاه
  • تگ بسته شدن PHP در انتهای فایل را حذف کنید

نحو پیش‌فرض

نحو پیش فرض با " شروع می شود".

مثال:

برچسب های باز کوتاه

تگ های کوتاه با " شروع می شودبرچسب‌های سبک کوتاه تنها زمانی در دسترس هستند که در فایل پیکربندی php.ini روی سرورها فعال باشند.

مثال:

تگ بسته شدن PHP در انتهای فایل را حذف کنید

توصیه می شود که یک تگ PHP در حال بسته شدن باید در فایلی که فقط حاوی کد PHP است حذف شود تا از وقوع فضای خالی تصادفی یا خطوط جدیدی که پس از برچسب بسته شدن PHP اضافه می شود، که ممکن است شروع به بافر کردن خروجی کند و باعث ایجاد اثرات نامطلوب شود، جلوگیری شود.

مثال:

جداسازی بیانیه PHP

در PHP، دستورات با یک نقطه ویرگول (;) مانند C یا Perl خاتمه می یابند. تگ بسته شدن یک بلوک از کد PHP به طور خودکار نشان دهنده یک نقطه ویرگول است، نیازی به داشتن نقطه ویرگول که آخرین خط یک بلوک PHP را خاتمه می دهد وجود ندارد.

قوانین جداسازی بیانیه

  • نقطه ویرگول
  • و/یا
  • یک تگ PHP در حال بسته شدن

کدهای معتبر

در مثال بالا، هم نقطه ویرگول (;) و هم یک تگ PHP بسته کننده وجود دارد.

در مثال بالا، بعد از آخرین دستور، علامت (;) وجود ندارد، اما یک تگ PHP در حال بسته شدن وجود دارد.

در مثال بالا، یک نقطه ویرگول (;) در آخرین دستورالعمل وجود دارد اما هیچ تگ PHP بسته شدنی وجود ندارد.

حساسیت به حروف کوچک و بزرگ PHP

در PHP توابع، کلاس‌ها، کلمات کلیدی زبان اصلی (به عنوان مثال if، else، while، echo و غیره) توسط کاربر تعریف شده است. بنابراین سه عبارت پژواک در مثال زیر برابر هستند.

مثال-1

")؛ ECHO("ما در حال یادگیری حساسیت حروف کوچک و بزرگ PHP هستیم
")؛ EcHo("ما در حال یادگیری حساسیت به حروف کوچک و بزرگ PHP هستیم
"); ?>

ما در حال یادگیری حساسیت به حروف PHP هستیم در حال یادگیری حساسیت به حروف بزرگ و کوچک PHP هستیم

از سوی دیگر، همه متغیرها به حروف کوچک و بزرگ حساس هستند.

مثال زیر را در نظر بگیرید. فقط عبارت اول مقدار را به صورت $amount نشان می دهد زیرا $amount، $AMOUNT $amoUNT سه متغیر مختلف هستند.

مثال-2

")؛ echo("مقدار: $AMOUNT است
")؛ echo("مقدار: $amoUNT است
"); ?>

مقدار این است: 200 مقدار است: مقدار:

عدم حساسیت فضای خالی PHP

به طور کلی، فضای خالی از جمله فاصله ها، برگه ها و کاراکترهای انتهای خط روی صفحه قابل مشاهده نیست. کالسکه برمی گردد. در PHP فضای خالی در کدنویسی اهمیتی ندارد، شما می توانید یک دستور خط را به هر تعداد خط یا تعدادی دستور جداگانه با هم در یک خط تقسیم کنید.

دو مثال زیر یکسان است:

مثال:

"؛ echo "کلاس او این است: $class و Roll No. is $roll_no"; ) student_info("David Rayy", "V", 12) ?>

مثال: عدم حساسیت فضای خالی پیشرفته

"؛ echo "کلاس او این است: $class و Roll No. is $roll_no"; ) student_info("David Rayy", "V", 12) ?>

نام دانش آموز: دیوید ری کلاس او: V and Roll No. 12 است

مثال: عدم حساسیت فضای سفید با زبانه ها و فاصله ها

در مثال زیر، از فاصله ها و تب ها در یک عملیات عددی استفاده می شود، اما در هر دو مورد، $xyz مقدار یکسانی را برمی گرداند.

"; // برگه ها و فاصله ها $xyz = 11 + 12; echo $xyz; ?>

PHP: نظرات تک خطی و چند خطی

نظر تک خطی

PHP از دو روش مختلف کامنت گذاری زیر پشتیبانی می کند.

# این یک نظر تک خطی است.

//این روش دیگری برای اظهار نظر تک خطی است.

مثال:

نظرات چند خطی

PHP از "C"، نظرات سبک پشتیبانی می کند. یک نظر با جفت کاراکتر /* شروع می شود و با جفت کاراکتر */ خاتمه می یابد.

/* این یک تست نظرات چندگانه است،
و این خطوط نادیده گرفته خواهد شد
در زمان اجرا */

مثال:

نظرات چند خطی را نمی توان تودرتو کرد

اولین اسکریپت PHP

در اینجا اولین اسکریپت PHP است که "Hello World..." را در مرورگر وب نمایش می دهد.

<?php echo "Hello World..."; ?>

تگ ها به وب سرور می گویند که هر چیزی که در داخل تگ ها وجود دارد را به عنوان کد PHP برای اجرا در نظر بگیرد. کد بسیار ساده است. از یک تابع PHP داخلی "echo" برای نمایش متن "Hello World..." در صفحه وب استفاده می کند. همه چیز خارج از این تگ ها مستقیماً به مرورگر ارسال می شود.

ارائه تصویری


ترکیب PHP و HTML

نحو PHP فقط در برچسب های PHP قابل اجرا است.

PHP را می توان در HTML جاسازی کرد و در هر جایی از سند قرار داد.

هنگامی که PHP در اسناد HTML تعبیه می شود و PHP این سند را تجزیه می کند، قسمتی که با یک تگ افتتاحیه تعبیر می شود () از PHP و نادیده گرفتن بقیه سند.

PHP و HTML با هم در مثال زیر دیده می شوند.

صفحه پی اچ پی

اینجا به صورت آنلاین تمرین کنید:

عبارات منظم ابزار بسیار مفیدی برای توسعه دهندگان است. با کمک آنها می توانید متن، کلمات یا هر کاراکتر دیگری را پیدا، تعریف یا جایگزین کنید. مقاله امروز شامل 15 مورد از مفیدترین عبارات منظم است که هر توسعه دهنده وب به آن نیاز دارد.

مقدمه ای بر عبارات منظم

بسیاری از توسعه دهندگان مبتدی درک و استفاده از عبارات منظم را بسیار دشوار می دانند. در واقع، همه چیز آنقدرها هم که به نظر می رسد دشوار نیست. قبل از اینکه مستقیماً به عبارات منظم پرش کنیم، با کد مفید و همه کاره آنها، اجازه دهید نگاهی به اصول اولیه بیاندازیم:

نحو بیان منظم

عبارت منظم به معنای
فو رشته "فو"
^فو رشته با "foo" شروع می شود
foo$ رشته با "foo" به پایان می رسد
^foo$ "foo" فقط یک بار در یک خط رخ می دهد
الف، ب یا ج
هر کاراکتر کوچک
[^A-Z] هر کاراکتری که با حروف بزرگ نباشد
(gif|jpg) هم به معنی گیف و jpeg است
+ یک یا چند نویسه کوچک
هر عدد، نقطه یا علامت منفی
^{1,}$ هر کلمه، حداقل یک حرف، عدد یا _
()() wy، wz، xy، یا xz
(^A-Za-z0-9) هر کاراکتری (نه یک عدد یا یک حرف)
({3}|{4}) یعنی سه حرف یا 4 عدد

توابع PHP برای عبارات منظم

عملکرد شرح
preg_match() تابع ()preg_match یک رشته را مطابق با یک الگوی داده شده جستجو می کند، اگر رشته پیدا شود true و در غیر این صورت false برمی گرداند.
preg_match_all() تابع ()preg_match_all تمام رخدادهای یک رشته را که توسط یک الگو داده شده است را پیدا می کند
preg_replace() تابع ()preg_replace مانند ereg_replace() کار می کند، با این تفاوت که عبارات منظم را می توان هم برای تعیین الگوی جستجو و هم از رشته برای جایگزینی مقدار یافت شده استفاده کرد.
preg_split() تابع ()preg_split همان split() است، با این تفاوت که یک عبارت منظم می تواند به عنوان پارامتری برای الگوی جستجو استفاده شود.
preg_grep() تابع preg_grep () تمام عناصر آرایه ورودی را جستجو می کند و تمام عناصری را که با الگوی عبارت منظم مطابقت دارند برمی گرداند.
preg_quote() از کاراکترهای بیان منظم فرار می کند

تایید نام دامنه

بررسی اینکه آیا یک رشته یک نام دامنه معتبر است یا خیر

$url = "http://komunitasweb.com/"; if (preg_match("/^(http|https|ftp)://(*(?:.*)+):?(d+)?/?/i", $url)) ( echo "url شما خوب است ."; ) else ( "نشانی اینترنتی اشتباه" را تکرار کنید.)

برجسته کردن کلمه در متن

این یک عبارت منظم بسیار مفید است، می توانید از آن برای پیدا کردن کلمه مناسب و برجسته کردن آن استفاده کنید. به خصوص برای نمایش نتایج جستجو مفید است.

$text = "جمله نمونه از KomunitasWeb، regex در برنامه نویسی وب رایج شده است. اکنون regex را یاد می گیریم. طبق ویکی پدیا، عبارات منظم (به اختصار regex یا regexp، با اشکال جمع regex، regexps یا regexen) به صورت رسمی نوشته می شوند. زبانی که می تواند توسط یک پردازشگر عبارت منظم تفسیر شود"؛ $text = preg_replace("/b(regex)b/i"، " 1"، $text)؛ echo $text;

برجسته کردن نتایج جستجو در وبلاگ وردپرس

همانطور که در مثال قبلی ذکر شد، این مثال کد در نتایج جستجو مفید است و یک راه عالی برای پیاده سازی این ویژگی در وبلاگ وردپرس وجود دارد.

فایل search.php خود را باز کنید و تابع ()the_title را پیدا کنید. کد زیر را جایگزین کنید:

echo $title;

حالا بالای این خط این کد را اضافه کنید:

\0"، $title); ?>

فایل search.php را ذخیره کرده و style.css را باز کنید. خط زیر را اضافه کنید:

Strong.search-excerpt ( پس زمینه: زرد؛ )

دریافت تمام تصاویر از یک سند HTML

اگر تا به حال نیاز به دریافت تمام تصاویر از یک صفحه وب داشته باشید، این کد باید به شما کمک کند تا به راحتی با استفاده از قابلیت های cURL یک بارگزار تصویر ایجاد کنید.

$image = array(); preg_match_all("/(img|src)=("|\")[^"\">]+/i", $data, $media); unset($data); $data = preg_replace("/(img|src)("|\"|="|=\")(.*)/i", "$3", $media); foreach ($data به عنوان $url) ($info = pathinfo($url); if (isset($info["extension"])) ( if (($info["extension"] == "jpg") || ($info["extension"] == "jpeg") || ($info["extension"] == "gif") || ($info["extension"] == "png")) array_push($ تصاویر، $url); ))

حذف کلمات تکراری (به حروف بزرگ و کوچک حساس نیست)

آیا اغلب هنگام تایپ کلمات را تکرار می کنید؟ این عبارت منظم کمک خواهد کرد.

$text = preg_replace("/s(w+s)1/i"، "$1"، $text);

حذف علائم نگارشی مکرر

همینطور، فقط برای نقطه گذاری. با ویرگول دوتایی خداحافظی کنید.

$text = preg_replace("/.+/i"، "."، $text);

تگ های XML/HTML را جستجو کنید

این تابع ساده دو آرگومان می گیرد. اولی برچسبی است که باید پیدا کنید و دومی متغیری است که حاوی XML یا HTML است. باز هم، استفاده از این تابع با cURL بسیار راحت است.

تابع get_tag($tag، $xml) ($tag = preg_quote($tag); preg_match_all("(<".$tag."[^>]*>(.*?)")"، $xml، $matches، PREG_PATTERN_ORDER); بازگشت $matches; )

تگ های XHTML/XML با مقدار مشخصه خاصی را جستجو کنید

این تابع بسیار شبیه به عملکرد قبلی است، با این تفاوت که می توانید ویژگی مورد نظر را روی برچسب تنظیم کنید. به عنوان مثال، شما می توانید به راحتی پیدا کنید

.

تابع get_tag($attr، $value، $xml، $tag=null) ( if(is_null($tag)) $tag = "\w+"؛ در غیر این صورت $tag = preg_quote($tag)؛ $attr = preg_quote($ attr)؛ $value = preg_quote ($value)؛ $tag_regex = "/<(".$tag.")[^>]*$attr\s*=\s*". "(["\"])$value\\2[^>]*>(.*?)<\/\\1>/" preg_match_all($tag_regex، $xml، $matches، PREG_PATTERN_ORDER)؛ بازگشت $matches؛ )

مقادیر رنگ هگزادسیمال را بیابید

یکی دیگر از ابزارهای مفید برای یک توسعه دهنده وب! این به شما امکان می دهد مقدار هگزادسیمال یک رنگ را پیدا کنید/بررسی کنید.

$string = "#555555"; if (preg_match("/^#(?:(?:(3))(1,2))$/i"، $string)) ( echo "مثال 6 موفقیت آمیز."؛ )

جستجوی عنوان مقاله

این قطعه کد متن داخل تگ ها را پیدا کرده و نمایش می دهد ، در صفحه html.

$fp = fopen("http://www.catswhocode.com/blog"،"r"); while (!feof($fp))($page .= fgets($fp, 4096); ) $titre = eregi(" (.*)",$page,$regs); echo $regs; fclose($fp);

تجزیه لاگ آپاچی

اکثر سایت ها بر روی وب سرور معروف Apache اجرا می شوند. اگر سایت شما یکی از آنهاست، چرا از PHP و عبارات منظم برای تجزیه لاگ های آپاچی استفاده نمی کنید؟

//Logs: وب سرور آپاچی //بازدیدهای موفقیت آمیز فقط به فایل های HTML. برای شمارش تعداد بازدید از صفحه مفید است. "^((?# IP یا نام دامنه مشتری)S+)s+((?#تأیید هویت پایه)S+s+S+)s+[((?#تاریخ و زمان)[^]]+)]s+"(?: GET|POST|HEAD) ((?#file)/[^ ?"]+?.html?)??((?#parameters)[^ ?"]+)? HTTP/+"s+(?#کد وضعیت)200s+((?#بایت منتقل شد)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#عامل کاربر )[^"]*)"$" //Logs: وب سرور آپاچی //404 فقط خطاهای "^((?# IP یا نام دامنه)S+)s+((?#اصالت‌سنجی پایه)S+s+S+) s+[((?#تاریخ و زمان)[^]]+)]s+"(?:GET|POST|HEAD) ((?#file)[^ ?"]+)??((?#پارامتر)[ ^؟]+)؟ HTTP/+"s+(?#کد وضعیت)404s+((?#بایت منتقل شد)[-0-9]+)s+"((?#ارجاع)[^"]*)"s+"((?#عامل کاربر )[^"]*)"$"

جایگزینی نقل قول های دوگانه با نقل قول های هوشمند

اگر عاشق تایپوگرافی هستید، این عبارت منظم را دوست خواهید داشت که نقل قول های دوگانه معمولی را با نقل قول های هوشمند جایگزین می کند. یک عبارت منظم مشابه در وردپرس در محتوای صفحه استفاده می شود.

Preg_replace("B"b([^"x84x93x94rn]+)b"B"، "?1?"، $text);

بررسی جامع رمز عبور

این عبارت منظم تضمین می کند که حداقل شش کاراکتر، اعداد، خط فاصله و خط زیر در قسمت متن وارد شده است.

فیلد متن باید حداقل شامل یک نویسه بزرگ، یک نویسه کوچک و یک عدد باشد.

"A(?=[-_a-zA-Z0-9]*?)(?=[-_a-zA-Z0-9]*?)(?=[-_a-zA-Z0-9]*؟) [-_a-zA-Z0-9](6،)z"

وردپرس: استفاده از یک عبارت منظم برای دریافت تصاویر از یک پست

از آنجایی که بسیاری از شما کاربران وردپرس هستید، ممکن است داشتن کدی مفید باشد که به شما امکان می دهد تمام تصاویر را از متن یک مقاله دریافت کرده و آنها را خروجی بگیرید.

برای استفاده از این کد، به سادگی آن را در هر فایلی در قالب خود قرار دهید.

پست_محتوا؛ $szSearchPattern = "~ ]* />~"؛ // اجرای preg_match_all برای گرفتن همه تصاویر و ذخیره نتایج در $aPics preg_match_all($szSearchPattern, $szPostContent, $aPics); // بررسی کنید که آیا حداقل 1 تصویر داریم $iNumberOfPics = count($aPics); if ($iNumberOfPics > 0) ( // اکنون در اینجا هر کاری را که باید با تصاویر انجام دهید انجام می دهید // برای این مثال، تصاویر فقط برای ($i=0; $i) نمایش داده می شوند< $iNumberOfPics ; $i++) { echo $aPics[$i]; }; }; endwhile; endif; ?>

تولید شکلک های خودکار

یکی دیگر از ویژگی های مورد استفاده در وردپرس این است که به شما این امکان را می دهد که به طور خودکار نمادهای شکلک را با یک تصویر لبخند جایگزین کنید.

$texte="متن با شکلک:-)"; echo str_replace(":-)"،" ",$text);

جاوا اسکریپت در مرورگر شما مسدود شده است. اجازه دهید جاوا اسکریپت برای این سایت کار کند!

strip_tags

(PHP 3 >= 3.0.8، PHP 4، PHP 5)

strip_tags- برچسب های HTML و PHP را از یک رشته حذف می کند

شرح

رشته strip_tags(string str[, string allowable_tags])

این تابع رشته رشته را با حذف تگ های HTML و PHP برمی گرداند. برای حذف برچسب ها، از خودکاری مشابه آنچه در عملکرد استفاده می شود استفاده می شود fgetss().

آرگومان دوم اختیاری را می توان برای تعیین برچسب هایی که نباید حذف شوند استفاده کرد.

اظهار نظر:آرگومان allowable_tags در PHP 3.0.13 و PHP 4.0b3 اضافه شد. از PHP 4.3.0، نظرات HTML نیز حذف می شوند.

توجه

زیرا strip_tags()صحت کد HTML را بررسی نمی کند، تگ های ناتمام می توانند منجر به حذف متنی شوند که در برچسب ها وجود ندارد.

مثال 1: مثال استفاده strip_tags()
$text = "

پاراگراف

مقداری متن دیگر"؛ echo strip_tags ($text)؛ echo "\n\n-------\n"؛ // حذف نشود

echo strip_tags($text، "

")؛ // اجازه ,,echo strip_tags($text، " ");

این مثال خروجی خواهد داد:

پاراگراف چند متن بیشتر -------

پاراگراف

چند متن دیگر

توجه

این تابع ویژگی های تگ های مشخص شده در آرگومان allowable_tags از جمله style و onmouseover را تغییر نمی دهد.

از PHP 5.0.0 strip_tags()امن برای رسیدگی به داده ها در فرم باینری.

این تابع یک اشکال قابل توجه دارد - چسباندن کلمات هنگام حذف برچسب ها است. علاوه بر این، این تابع دارای آسیب پذیری هایی است. تابع جایگزین مشابه strip_tags:

c" * - html "کثیف" زمانی به درستی پردازش می شود که کاراکترها را بتوان در مقادیر ویژگی تگ یافت< >* - html شکسته به درستی پردازش می شود * - نظرات، اسکریپت ها، استایل ها، PHP، Perl، کدهای ASP، تگ های MS Word، CDATA بریده می شوند * - اگر متن حاوی کد html باشد به طور خودکار قالب بندی می شود * - محافظت در برابر تقلبی مانند:<script>alert ("سلام") script>" * * @param string $s * @param array $allowable_tags آرایه‌ای از برچسب‌ها که پاک نمی‌شوند * مثال: "b" -- تگ با ویژگی‌ها باقی می‌ماند، " " -- تگ بدون ویژگی باقی می ماند * @param bool $is_format_spaces فواصل و خطوط شکسته را قالب بندی کنید؟ * ظاهر متن خروجی (ساده) را تا حد امکان به ظاهر متن در ورودی مرورگر نزدیک کنید. * به عبارت دیگر، به درستی متن/html را به متن/ساده تبدیل می‌کند. * متن فقط در صورتی قالب‌بندی می‌شود که تگ‌ها حذف شده باشند. آرایه ای از نام تگ های جفت، که به عنوان پاراگراف در نظر گرفته می شوند (اگر $is_format_spaces = درست است) * مقادیر پیش فرض را ببینید * @return string * * @license http://creativecommons.org/licenses/by-sa/3.0/ * @نویسنده Nasibullin Rinat، http: //orangetie.ru/ * @charset ANSI * @نسخه 4.0.14 */ تابع strip_tags_smart(/*string*/ $s، آرایه $allowable_tags = null، /*boolean*/ $is_format_spaces = true، آرایه $pair_tags = آرایه ("script"، "style"، "map"، "iframe"، "frameset"، "object"، "applet"، "co mment، "button"، "textarea"، "select")، آرایه $para_tags = آرایه("p"، "td"، "th"، "li"، "h1"، "h2"، "h3"، "h4"، "h5"، "h6"، "div"، "form"، "title"، "pre")) (//return strip_tags($s); static $_callback_type = false; static $_allowable_tags = array(); static $_para_tags = array(); #بیان منظم برای ویژگی‌های برچسب #پرونده‌های صحیح HTML کثیف و شکسته در یک مجموعه نویسه‌ای تک بایتی یا چند بایتی UTF-8! static $re_attrs_fast_safe = "(؟!) #گزاره، که پس از یک برچسب #صحیح ویژگی ها (?> [^>"\"]+ | (?<=[\=\x20\r\n\t]|\xc2\xa0) "[^"]*" | (?<=[\=\x20\r\n\t]|\xc2\xa0) \"[^\"]*\")* #incorrect attributes [^>]*+"؛ if (is_array($s)) ( if ($_callback_type === "strip_tags") ($tag = strtolower($s)؛ if ($_allowable_tags) (#برچسب با ویژگی ها if (array_key_exists($ برچسب، $_allowable_tags)) $s را برمی گرداند؛ #برچسب بدون ویژگی اگر (کلید_آرایه وجود دارد("<" . $tag . ">", $_allowable_tags)) ( if (substr($s, 0, 2) === ""; if (substr($s, -2) === "/>") برگرداند "<" . $tag . " />"؛برگشت"<" . $tag . ">"; ) ) if ($tag === "br") "\r\n" را برگرداند؛ اگر ($_para_tags && array_key_exists($tag, $_para_tags)) "\r\n\r\n" را برگرداند ""; ) trigger_error("نوع پاسخ تماس نامشخص "" . $_callback_type . ""!"، E_USER_ERROR); ) if (($pos = strpos($s, "<")) === false || strpos($s, ">"، $pos) === نادرست) #speed بهبود ( #برچسب ها یافت نشد بازگشت $s؛ ) $length = strlen($s)؛ #تگ های جفت نشده (باز کردن، بسته شدن، !DOCTYPE، فضای نام MS Word) $re_tags = "~:*+)؟) #1 ". $re_attrs_fast_safe . " > ~sxSX"; $patterns = array("/<([\?\%]) .*? \\1>/sxSX، #embedded PHP، Perl، کد ASP "/<\!\\]>/sxSX، #بلوک های CDATA #"/<\!\[ [\x20\r\n\t]* .*? \]>/sxSX، #:منسوخ شده: برچسب های نوع MS Word... "/<\!--.*?-->/sSX، #کامنت‌ها #MS Word برچسب‌هایی مانند "..."، #اجرای کد شرطی برای نوع IE " HTML " # اجرای کد شرطی برای نوع IE "HTML"#به http://www.tigir.com/comments.htm مراجعه کنید"/<\! (?:--)?+ \[ (?>[^\]"\"]+ | "[^"]*" | \"[^\"]*\")* \] (?:--)?+ > /sxSX",); if ($pair_tags) ( #برچسب های جفت شده با محتوا: foreach ($pair_tags به عنوان $k => $v) $pair_tags[$k] = preg_quote($v، "/")؛ $patterns = "/<((?i:" . implode("|", $pair_tags) . "))" . $re_attrs_fast_safe . "(? .*? <\/(?i:\\1)" . $re_attrs_fast_safe . ">/sxSX"; ) #d($patterns)؛ $i = 0؛ #loop protect $max = 99؛ در حالی که ($i< $max) { $s2 = preg_replace($patterns, "", $s); if (preg_last_error() !== PREG_NO_ERROR) { $i = 999; break; } if ($i == 0) { $is_html = ($s2 != $s || preg_match($re_tags, $s2)); if (preg_last_error() !== PREG_NO_ERROR) { $i = 999; break; } if ($is_html) { if ($is_format_spaces) { /* В библиотеке PCRE для PHP \s - это любой пробельный символ, а именно класс символов [\x09\x0a\x0c\x0d\x20\xa0] или, по другому, [\t\n\f\r \xa0] Если \s используется с модификатором /u, то \s трактуется как [\x09\x0a\x0c\x0d\x20] Браузер не делает различия между пробельными символами, друг за другом подряд идущие символы воспринимаются как один */ #$s2 = str_replace(array("\r", "\n", "\t"), " ", $s2); #$s2 = strtr($s2, "\x09\x0a\x0c\x0d", " "); $s2 = preg_replace("/ [\x09\x0a\x0c\x0d]++ | <((?i:pre|textarea))" . $re_attrs_fast_safe . "(? .+? <\/(?i:\\1)" . $re_attrs_fast_safe . ">\K /sxSX، " "، $s2); if (preg_last_error() !== PREG_NO_ERROR) ( $i = 999; break; ) ) #آرایه ای از برچسب ها که در صورت ($allowable_tags) $_allowable_tags پاک نمی شوند = array_flip ($allowable_tags)؛ #pair تگ هایی که به عنوان پاراگراف در نظر گرفته می شوند، اگر ($para_tags) $_para_tags = array_flip($para_tags); ) )#if #tags در حال پردازش اگر ($is_html) ($_callback_type = "strip_tags"; $s2 = preg_replace_callback($re_tags، __FUNCTION__، $s2)؛ $_callback_type = نادرست؛ if (preg_last_error() !== PREG_NO_ERROR) ($i = 999؛ شکست؛ ) ) اگر ($s === $s2) ; $s = $s2; $i++; )#در حالی که اگر ($i >= $max) $s = strip_tags($s)؛ #چرخه‌های زیادی برای جایگزینی... if ($is_format_spaces && strlen($s) != = $length) ( #حذف فاصله های تکراری $s = preg_replace("/\x20\x20++/sSX", " "، trim($s))؛ #حذف فاصله های قبل و بعد از خطوط جدید $s = str_replace (آرایه ("\r\n\x20"، "\x20\r\n")، "\r\n"، $s)؛ #جایگزینی 3 خط جدید و بیشتر به 2 خط جدید $s = preg_replace(" /[ \r\n](3،)+/sSX، "\ r\n\r\n، $s)؛ ) $s را برگرداند. )؟>

توضیحات عملکرد را نیز ببینید