وظيفة PHP htmlspecialchars()

مثال

تحويل الرموز المسبقة المعرفة "<" (أصغر من) و ">" (أكبر من) إلى HTML entities:

<?php
$str = "هذا نص <b>مائل</b>.";
echo htmlspecialchars($str);
?>

以上代码的 HTML 输出如下(查看源代码):

<!DOCTYPE html>
<html>
<body>
هذا نص <b>مائل</b>.
</body>
</html>

以上代码的浏览器输出:

هذا نص <b>مائل</b>.

运行实例

التعريف والاستخدام

تحويل الرموز المسبقة المعرفة إلى HTML entities باستخدام وظيفة htmlspecialchars().

الرموز المسبقة المعرفة هي:

  • & (و) يصبح &
  • " (قوس مائل مزدوج) يصبح "
  • ' (قوس مائل) يصبح '
  • < (أصغر من) يصبح <
  • > (أكبر من) يصبح >

نصيحة:لتحويل HTML entities الخاصة إلى أحرف، استخدم: htmlspecialchars_decode() الوظيفة.

النص

htmlspecialchars(string,flags,character-set,double_encode)
الإعدادات الوصف
string مطلوب. يحدد السلسلة التي سيتم تحويلها.
flags

اختياري. يحدد كيفية معالجة القوائم اقتباس والترميز غير الصالح واستخدام نوع المستند.

أنواع القوائم المتاحة:

  • ENT_COMPAT - افتراضي. شفّر القوائم اقتباس الدوائر فقط.
  • ENT_QUOTES - شفّر القوائم اقتباس الدوائر والأسهم.
  • ENT_NOQUOTES - لا تشفّر أي قوائم اقتباس.

الترميز غير الصالح:

  • ENT_IGNORE - تجاهل الترميز غير الصالح بدلاً من إرجاع سلسلة فارغة. يجب تجنب القيام بذلك، لأنه قد يؤثر على الأمان.
  • ENT_SUBSTITUTE - استبدال الترميز غير الصالح بترميز محدد يحتوي على بديل يونيكود U+FFFD (UTF-8) أو &#FFFD; بدلاً من إرجاع سلسلة فارغة.
  • ENT_DISALLOWED - استبدال النقاط غير الصالحة في نوع المستند المحدد ببديل يونيكود U+FFFD (UTF-8) أو &#FFFD;.

规定使用的文档类型的附加 flags:

  • تحديد flags الإضافية المستخدمة في نوع الوثيقة
  • ENT_HTML401 - افتراضي. يتم معالجة الكود كـ HTML 4.01.
  • ENT_HTML5 - يتم معالجة الكود كـ HTML 5.
  • ENT_XML1 - يتم معالجة الكود كـ XML 1.
character-set

ENT_XHTML - يتم معالجة الكود كـ XHTML.

اختياري. بصرية تحدد مجموعة الحروف التي يتم استخدامها.

  • القيم المسموح بها:
  • UTF-8 - افتراضي. ASCII متوافق مع 8 bits Unicode متعدد الأحرف
  • ISO-8859-1 - أوروبا الغربية
  • ISO-8859-15 - أوروبا الغربية (تضيف رموز اليورو + الأحرف الفرنسية والفنلندية المفقودة في ISO-8859-1)
  • cp866 - مجموعة الحروف المخصصة لمستخدمي DOS في روسيا
  • cp1251 - مجموعة الحروف المخصصة لمستخدمي Windows في روسيا
  • cp1252 - مجموعة الحروف المخصصة لمستخدمي Windows في أوروبا
  • KOI8-R - اللغة الروسية
  • BIG5 - اللغة الصينية المبسطة، يتم استخدامها بشكل رئيسي في تايوان
  • GB2312 - اللغة الصينية البسيطة، مجموعة الحروف القياسية
  • BIG5-HKSCS - BIG5 مع توسيع هونغ كونغ
  • Shift_JIS - لغة اليابانية
  • EUC-JP - لغة اليابانية

MacRoman - مجموعة الحروف المستخدمة في نظام التشغيل Macالتعليقات:

double_encode

اختياري. قيمة بولية، تحدد ما إذا كان يجب ترميز HTML entities موجودة مسبقًا.

  • TRUE - افتراضي. سيتم تحويل كل entity.
  • FALSE - لن يتم ترميز أي HTML entities موجودة مسبقًا.

تفاصيل تقنية

القيمة المعدة:

تعود بالبصرية المترجمة.

إذا 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 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>
I love "PHP"
</body>
</html>

以上代码的浏览器输出:

I love "PHP".

运行实例