فونکسی htmlentities() PHP

مثال

تبدیل کاراکترها به عناصر HTML:

<?php
$str = "<? W3S?h????>";
echo htmlentities($str);
?>

خروجی HTML کد بالا به شرح زیر است (منبع کد را مشاهده کنید):

<!DOCTYPE html>
<html>
<body>
<© W3Sçh°°¦§>
</body>
</html>

خروجی مرورگر برای کد بالا:

<? W3S?h????>

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

فونکسی htmlentities() کاراکتر را به HTML entity تبدیل می‌کند.

توضیحات:برای تبدیل HTML entity به کاراکتر، از html_entity_decode() فونکسی استفاده کنید.

توضیحات:لطفاً از get_html_translation_table() فونکسی که جدول ترجمه‌ای که توسط htmlentities() استفاده می‌شود را بازمی‌گرداند.

نحوه استفاده

htmlentities(string,flags,character-set,double_encode)
پارامترها توضیح
string ضروری. مشخص می‌کند رشته‌ای که باید تبدیل شود.
flags

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

نوع‌های نقل قول موجود:

  • ENT_COMPAT - پیش‌فرض. تنها نقل قول‌های دوگانه را کد می‌کند.
  • ENT_QUOTES - نقل قول‌های دوگانه و یکگانه را کد می‌کند.
  • ENT_NOQUOTES - هیچ نقل قولی را کد نمی‌کند.

کدپوینت‌های نامعتبر:

  • ENT_IGNORE - کدپوینت‌های نامعتبر را نادیده می‌گیرد، به جای بازگشت یک رشته خالی. باید از آن اجتناب کرد، زیرا ممکن است تأثیرات امنیتی داشته باشد.
  • ENT_SUBSTITUTE - کدپوینت‌های نامعتبر را با یک کاراکتر مشخص شده با کاراکتر جایگزین Unicode U+FFFD (UTF-8) یا &#FFFD; جایگزین می‌کند، به جای بازگشت یک رشته خالی.
  • ENT_DISALLOWED - کدپوینت‌های نامعتبر در نوع مستند مشخص شده را با کاراکتر جایگزین Unicode U+FFFD (UTF-8) یا &#FFFD; جایگزین می‌کند.

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

  • ENT_HTML401 - پیش‌فرض. به عنوان کد HTML 4.01 پردازش می‌شود.
  • ENT_HTML5 - به عنوان کد HTML 5 پردازش می‌شود.
  • ENT_XML1 - به عنوان کد XML 1 پردازش می‌شود.
  • ENT_XHTML - به عنوان کد XHTML پردازش می‌شود.
character-set

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

مقدار مجاز:

  • UTF-8 - پیش‌فرض. ASCII سازگار با چند بایتی 8 بیتی Unicode
  • ISO-8859-1 - اروپایی
  • ISO-8859-15 - اروپایی (شامل نمادهای یورو + حروف فرانسوی و فنلاندی که در ISO-8859-1 گم شده‌اند)
  • cp866 - مجموعه کاراکترهای kyrillic اختصاصی DOS
  • cp1251 - مجموعه کاراکترهای کyrillic اختصاصی ویندوز
  • cp1252 - مجموعه کاراکترهای اروپایی اختصاصی ویندوز
  • KOI8-R - روسی
  • BIG5 - چینی پیچیده، اصلی در تایوان استفاده می‌شود
  • GB2312 - چینی ساده، مجموعه استاندارد کاراکترهای ملی
  • BIG5-HKSCS - BIG5 با گسترش هنگ کنگ
  • Shift_JIS - ژاپنی
  • EUC-JP - ژاپنی
  • MacRoman - مجموعه کاراکترهای سیستم عامل Mac

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

double_encode

اختیاری. بولین، مشخص می‌کند آیا باید عناصر HTML موجود کدگذاری شوند یا خیر.

  • TRUE - پیش‌فرض. برای هر عنصر کدگذاری انجام می‌شود.
  • FALSE - کدگذاری عناصر HTML موجود انجام نمی‌شود.

جزئیات فنی

بازگشت‌ارزش:

رشته تبدیل شده را بازمی‌گردانند.

اگر string در صورت شامل بودن کدگذاری نامعتبر، یک رشته خالی بازمی‌گردانند، مگر اینکه ENT_IGNORE یا ENT_SUBSTITUTE قرار داده شده باشد.

نسخه PHP: 4+
گزارش به‌روزرسانی‌ها:

در PHP 5،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 پارامترها.

مثال‌های بیشتر

مثال 1

تبدیل کاراکترها به عناصر HTML:

<?php
$str = "Bill & 'Steve'";
echo htmlentities($str, ENT_COMPAT); // فقط نقل قول‌های دوگانه تبدیل می‌شود
echo "<br>";
echo htmlentities($str, ENT_QUOTES); // تبدیل نقل قول‌های دوگانه و یکگانه
echo "<br>";
echo htmlentities($str, ENT_NOQUOTES); // هیچ نقل‌قولی تبدیل نمی‌شود
?>

خروجی HTML کد بالا به شرح زیر است (منبع کد را مشاهده کنید):

<!DOCTYPE html>
<html>
<body>
Bill & 'Steve'<br>
Bill & 'Tarzan'<br>
Bill & 'Steve'
</body>
</html>

خروجی مرورگر برای کد بالا:

Bill & 'Steve'
Bill & 'Steve'
Bill & 'Steve'

اجرای نمونه

مثال 2

با استفاده از مجموعه‌ی کاراکترهای اروپای غربی، برخی از کاراکترها به صورت entity‌های HTML تبدیل می‌شوند:

<?php
$str = "My name is Øyvind Øsane. I'm Norwegian.";
echo htmlentities($str, ENT_QUOTES, "ISO-8859-1"); 
// فقط نقل‌قول‌های دوگانه را تبدیل می‌کند (نقل‌قول‌های یکگانه را تبدیل نمی‌کند) و از مجموعه‌ی کاراکترهای اروپای غربی استفاده می‌کند
?>

خروجی HTML کد بالا به شرح زیر است (منبع کد را مشاهده کنید):

<!DOCTYPE html>
<html>
<body>
نام من Øyvind Øsane است. من نروژی‌ام.
</body>
</html>

خروجی مرورگر برای کد بالا:

نام من Øyvind Øsane است. من نروژی‌ام.

اجرای نمونه