توابع 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 |
اختیاری. تعیین میکند چگونه نقل قولها، کدهای غیرمجاز و نوع مستند استفاده میشوند. نوعهای نقل قول موجود:
کدهای غیرمجاز:
flags اضافی برای تعیین نوع مستند استفاده شده:
|
character-set |
اختیاری. یک توالی که یک مجموعه نمادهای مشخص شده برای استفاده را تعیین میکند مقدار مجاز:
نکته:در نسخههای PHP قبل از 5.4، مجموعههای نمادهای غیرقابل شناسایی نادیده گرفته میشوند و توسط ISO-8859-1 جایگزین میشوند. از PHP 5.4 به بعد، مجموعههای نمادهای غیرقابل شناسایی نادیده گرفته میشوند و توسط UTF-8 جایگزین میشوند |
double_encode |
اختیاری. یک مقدار بولین که مشخص میکند آیا HTML entity موجود کدگذاری شود یا خیر
|
جزئیات فنی
مقدار بازگشتی: |
توالی تبدیل شده را بازمیگردانند اگر 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> من عاشق "PHP" هستم. </body> </html>
خروجی مرورگر کد بالا به شرح زیر است:
من عاشق "PHP" هستم.