PHP htmlspecialchars() Function












❮ مرجع رشته PHP




مثال


کاراکترهای از پیش تعریف شده "<" را تبدیل کنید (کمتر از) و ">" (بیشتر از) به موجودیت های HTML:



$str = "این یک متن ضخیم است.";
echo htmlspecialchars($str);

?>

خروجی HTML کد بالا (نمایش منبع):

خواهد بود




<بدن>

این مقداری <b>پررنگ</b> متن.





خروجی مرورگر کد بالا به صورت زیر خواهد بود:



این مقداری پررنگ متن.

خودت امتحانش کن »




تعریف و استفاده


تابع htmlspecialchars() برخی از کاراکترهای از پیش تعریف شده را به موجودیت های HTML تبدیل می کند.


کاراکترهای از پیش تعریف شده عبارتند از:



  • & (امپرسند) &
  • می شود
  • " (نقل قول دوگانه) به "
  • تبدیل می شود
  • ' (یک نقل قول) به &C#039;
  • تبدیل می شود
  • < (کمتر از) <
  • می شود
  • > (بیشتر از) >
  • می شود

نکته: برای تبدیل نهادهای خاص HTML به کاراکتر،
از تابع htmlspecialchars_decode() استفاده کنید.





نحو



htmlspecialchars(رشته، پرچم، مجموعه کاراکتر، دوگانه_رمز)


مقادیر پارامتر









را مشخص می کند













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

سبک های نقل قول موجود عبارتند از:



  • ENT_COMPAT - پیش‌فرض. فقط دو نقل قول را رمزگذاری می کند

  • ENT_QUOTES - نقل قول های دوتایی و تکی را رمزگذاری می کند

  • ENT_NOQUOTES - هیچ نقل قولی را رمزگذاری نمی کند


رمزگذاری نامعتبر:



  • ENT_IGNORE - به جای اینکه تابع یک رشته خالی را برگرداند، کدگذاری نامعتبر را نادیده می گیرد. باید از آن اجتناب کرد، زیرا ممکن است پیامدهای امنیتی داشته باشد.

  • ENT_SUBSTITUTE - رمزگذاری نامعتبر را برای مجموعه کاراکترهای مشخص شده با یک نویسه جایگزین یونیکد U+FFFD (UTF-8) یا &C#FFFD; به جای برگرداندن یک رشته خالی.

  • ENT_DISALLOWED - نقاط کدی را که در doctype مشخص شده نامعتبر هستند با یک نویسه جایگزین Unicode U+FFFD (UTF-8) یا &C#FFFD;
  • جایگزین می‌کند.

پرچم های اضافی برای تعیین نوع doctype استفاده شده:



  • ENT_HTML401 - پیش‌فرض. کد را به صورت HTML 4.01
  • مدیریت کنید
  • ENT_HTML5 - کد را به عنوان HTML 5 مدیریت کنید

  • ENT_XML1 - کد را به عنوان XML 1 مدیریت کنید

  • ENT_XHTML - کد را به عنوان XHTML مدیریت کنید


مجموعه کاراکتر اختیاری. رشته ای که مشخص می کند از کدام مجموعه کاراکتر استفاده شود.

مقادیر مجاز عبارتند از:



  • UTF-8 - پیش‌فرض. یونیکد 8 بیتی چند بایتی سازگار با اسکی

  • ISO-8859-1 - اروپای غربی

  • ISO-8859-15 - اروپای غربی (علامت یورو + حروف فرانسوی و فنلاندی که در ISO-8859-1 وجود ندارد را اضافه می کند)

  • cp866 - مجموعه حروف سیریلیک مخصوص DOS

  • cp1251 - مجموعه حروف سیریلیک مخصوص ویندوز

  • cp1252 - مجموعه نویسه مخصوص ویندوز برای اروپای غربی

  • KOI8-R - روسی

  • BIG5 - چینی سنتی، عمدتاً در تایوان استفاده می‌شود

  • GB2312 - چینی ساده شده، مجموعه نویسه استاندارد ملی

  • BIG5-HKSCS - Big5 با برنامه های افزودنی هنگ کنگ

  • Shift_JIS - ژاپنی

  • EUC-JP - ژاپنی

  • MacRoman - مجموعه نویسه‌هایی که توسط Mac OS استفاده می‌شد


توجه: مجموعه کاراکترهای ناشناخته نادیده گرفته می‌شوند و ISO-8859-1 در نسخه‌های قبل از PHP 5.4 جایگزین می‌شوند. از PHP 5.4، نادیده گرفته می شود و با UTF-8 جایگزین می شود.


double_encode اختیاری. یک مقدار بولی که مشخص می‌کند موجودیت‌های html موجود کدگذاری شوند یا نه.

  • درست - پیش فرض. همه چیز را تبدیل می کند

  • FALSE - موجودیت های html موجود را رمزگذاری نمی کند














جزئیات فنی















مقدار بازگشتی: رشته تبدیل شده را برمی گرداند

اگر رشته دارای رمزگذاری نامعتبر باشد، یک رشته خالی برمی گرداند، مگر اینکه پرچم های ENT_IGNORE یا ENT_SUBSTITUTE باشند. مجموعه
نسخه PHP: 4+
تغییر: PHP 5.6 - مقدار پیش‌فرض را برای مجموعه کاراکتر تغییر داد
پارامتر به مقدار مجموعه حروف پیش فرض (در پیکربندی).
PHP 5.4 -
مقدار پیش‌فرض پارامتر character-set را به UTF-8 تغییر داد.

PHP 5.4 - ENT_SUBSTITUTE، ENT_DISALLOWED، ENT_HTML401، ENT_HTML5 اضافه شد،
ENT_XML1 و ENT_XHTML
PHP 5.3 - ثابت ENT_IGNORE اضافه شد.
PHP 5.2.3 -
پارامتر double_encode اضافه شد.
PHP 4.1 - character-set اضافه شد
پارامتر.




نمونه های بیشتر



مثال


تبدیل برخی از کاراکترهای از پیش تعریف شده به موجودیت های HTML:




$str = "جین و 'تارزان'";

echo htmlspecialchars($str، ENT_COMPAT); // فقط دو نقل قول را تبدیل می کند

echo "
";

echo htmlspecialchars($str، ENT_QUOTES); // گیومه های دوتایی و تکی را تبدیل می کند

echo "
";

echo htmlspecialchars($str، ENT_NOQUOTES); // هیچ نقل قولی را تبدیل نمی کند

?>

خروجی HTML کد بالا (نمایش منبع):

خواهد بود




<بدن>

جین & "تارزان"


جین & &C#039;تارزان&C#039;


جین & "تارزان"





خروجی مرورگر کد بالا به صورت زیر خواهد بود:



جین & "تارزان"

جین & "تارزان"

جین & "تارزان"

خودت امتحانش کن »



مثال


تبدیل نقل قول های دوگانه به موجودیت های HTML:




$str = 'من عاشق "PHP" هستم.';
echo htmlspecialchars($str, ENT_QUOTES); // گیومه های دوتایی و تکی را تبدیل می کند

?>

خروجی HTML کد بالا (نمایش منبع):

خواهد بود




<بدن>

من "PHP" را دوست دارم.





خروجی مرورگر کد بالا به صورت زیر خواهد بود:



من عاشق "PHP" هستم.

خودت امتحانش کن »




❮ مرجع رشته PHP