تابع PHP htmlspecialchars()

مثال

کاراکترهای پیش‌تعریف شده "<" (کوچکتر از) و ">" (بزرگتر از) را به HTML entity تبدیل کنید:

<?php
$str = "این یک متن <b>موی بلند</b> است.";
echo htmlspecialchars($str);
?>

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

<!DOCTYPE html>
<html>
<body>
این یک متن <b>موی بلند</b> است.
</body>
</html>

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

این یک متن <b>موی بلند</b> است.

مثال‌های اجرایی

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

تابع htmlspecialchars() کاراکترهای پیش‌تعریف شده را به HTML entity تبدیل می‌کند.

کاراکترهای پیش‌تعریف شده:

  • & (و) به & تبدیل می‌شود
  • " (نقل قول بزرگ) به " تبدیل می‌شود
  • ' (نقل قول کوچک) به ' تبدیل می‌شود
  • < (کوچکتر از) به < تبدیل می‌شود
  • > (بزرگتر از) به > تبدیل می‌شود

توضیحات:برای تبدیل HTML entity‌های خاص به کاراکترها از htmlspecialchars_decode() تابع.

نحوه استفاده

htmlspecialchars(مفہوم: 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 - طبیعی طور پر، کی وچ کی طرز سے کیا جائے گا۔
  • مفہوم: ENT_HTML5 - پانچ کی طرز سے کیا جائے گا۔
  • مفہوم: ENT_XML1 - ایکم کی طرز سے کیا جائے گا۔
  • مفہوم: ENT_XHTML - کے ویچ کی طرز سے کیا جائے گا۔
character-set

مفہوم: اختیاری، یہ ایک کارکتر سیٹ کا نشان دہ میں مقرر کیا جائے کا مفہوم ہوگا جو استعمال کیا جانا ہوگا۔

مفہوم: مجاز کئے گئے مفہوم:

  • مفہوم: UTF-8 - طبیعی طور پر، ASCII کا مددگار بند اکیس بائیتی یونیکد
  • مفہوم: ISO-8859-1 - وینڈوز مختص سی اور یورپی کارکتر سیٹ
  • مفہوم: ISO-8859-15 - وینڈوز مختص سی اور یورپی کارکتر سیٹ (یورو علامت شامل)
  • مفہوم: cp866 - DOS مختص سیرلیک کارکتر سیٹ
  • مفہوم: cp1251 - ویندوز مختص سیرلیک کارکتر سیٹ
  • مفہوم: cp1252 - ویندوز مختص سی اور یورپی کارکتر سیٹ
  • مفہوم: KOI8-R - روسی
  • مفہوم: BIG5 - مشرقی چینی، بائیگ بائیگ بند بنگلہ دیش
  • مفہوم: GB2312 - سادہ چینی، قومی کارکتر سیٹ
  • مفہوم: BIG5-HKSCS - بائیگ بائیگ سے کچھ بائیگ بائیگ بند شامل بنگلہ دیش
  • مفہوم: Shift_JIS - جاپانی
  • مفہوم: EUC-JP - جاپانی
  • مفہوم: MacRoman - ماک اپریشننگ سسٹم کا کارکتر سیٹ

مفہوم: تبصرہ:مفہوم: اگلایا: اگر کوئی ناقص کد شناخت نہیں کیا جاسکتا تو ISO-8859-1 سے متبادل کیا جائے گا۔ پی ایچ پی 5.4 سے، اگر کوئی ناقص کد شناخت نہیں کیا جاسکتا تو UTF-8 سے متبادل کیا جائے گا۔

double_encode

مفہوم: اختیاری، بولی سائیں، موجودہ HTML کی اشاریوں کو کیا جائے کا فیصلہ کرتا ہے یا نہیں。

  • مفہوم: TRUE - کچھ نہیں، طبیعی طور پر ہر اشاری کو تبدیل کیا جائے گا。
  • مفہوم: FALSE - موجودہ HTML کی اشاریوں کو کدی کدیم نہیں کیا جائے گا。

مفہوم: تکنیکی تفصیلات

مفہوم: رجوع کا مفہوم:

مفہوم: تبدیل شدہ الفاظ کا رجوع دینا جائز ہوگا。

مفہوم: اگر، مفہوم: string مفہوم: اگر کوئی ناقص کد درج کیا گیا ہو، تو خالی الفاظ کا رجوع دینا جائز ہوگا، مگر کہ ENT_IGNORE یا ENT_SUBSTITUTE نشانات کو مقرر کیا گیا ہو۔

مفہوم: پی ایچ پی ورژن: مفہوم: 4+
مفہوم: اپدیاتی نامہ:

مفہوم: فی پی ایچ پی 5 میں،character-set مفہوم: پارامتر کا دفعتی مرتبہ UTF-8 میں تبدیل کیا گیا۔

مفہوم: فی پی ایچ پی 5.4 میں، نئی اضافات: ENT_SUBSTITUTE، ENT_DISALLOWED، ENT_HTML401، ENT_HTML5، ENT_XML1 اور ENT_XHTML.

مفہوم: فی پی ایچ پی 5.3 میں، نئی اضافات ENT_IGNORE.

مفہوم: فی پی ایچ پی 5.2.3 میں، نئی اضافات double_encode پارامترها.

در PHP 4.1، character-set پارامترها.

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

مثال 1

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

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

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

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

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

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

مثال‌های اجرایی

مثال 2

تبدیل اشارتی‌های دوگانه به نمادهای HTML:

<?php
$str = 'I love "PHP".';
echo htmlspecialchars($str, ENT_QUOTES); // تبدیل اشارتی‌های دوگانه و یکگانه
?>

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

<!DOCTYPE html>
<html>
<body>
من عاشق "PHP" هستم.
</body>
</html>

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

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

مثال‌های اجرایی