الفرق بين المراجعتين ل"PHP/addcslashes"

من موسوعة حسوب
< PHP
اذهب إلى التنقل اذهب إلى البحث
ط
 
سطر 11: سطر 11:
 
== المعاملات ==
 
== المعاملات ==
  
=== str ===
+
=== <code>str</code> ===
 
تحتوي السلسلة النصية المُرَاد إضافة الخطوط المائلة العكسية لها.
 
تحتوي السلسلة النصية المُرَاد إضافة الخطوط المائلة العكسية لها.
  
=== charlist ===
+
=== <code>charlist</code> ===
 
تحتوي المحارف التي ستُضاف الخطوط المائلة العكسية عندها. فإذا احتوى المعامل <code>charlist</code> على أحرف على شكل <code>n\</code> أو <code>‎\r</code> وما إلى ذلك من القيم فستتعامل هذه الدالة معها بنمط لغة C، أما العناصر الأخرى غير الأبجدية أو الرقمية والتي لها رمز ASCII أقل من 32 وأعلى من 126 فستُحَول إلى التمثيل الثُماني للتعامل معها.
 
تحتوي المحارف التي ستُضاف الخطوط المائلة العكسية عندها. فإذا احتوى المعامل <code>charlist</code> على أحرف على شكل <code>n\</code> أو <code>‎\r</code> وما إلى ذلك من القيم فستتعامل هذه الدالة معها بنمط لغة C، أما العناصر الأخرى غير الأبجدية أو الرقمية والتي لها رمز ASCII أقل من 32 وأعلى من 126 فستُحَول إلى التمثيل الثُماني للتعامل معها.
  

المراجعة الحالية بتاريخ 15:25، 5 أبريل 2018

تضيف الدالة addcslashes()‎‎ الخطوط المائلة العكسية (backslashes) كما في لغة C.

الوصف

string addcslashes ( string $str , string $charlist )

تُعيد الدالة سلسلةً نصيةً تسبقها خطوط مائلة عكسية (backslashes) قبل المحارف الموجودة في المعامل charlist.

المعاملات

str

تحتوي السلسلة النصية المُرَاد إضافة الخطوط المائلة العكسية لها.

charlist

تحتوي المحارف التي ستُضاف الخطوط المائلة العكسية عندها. فإذا احتوى المعامل charlist على أحرف على شكل n\ أو ‎\r وما إلى ذلك من القيم فستتعامل هذه الدالة معها بنمط لغة C، أما العناصر الأخرى غير الأبجدية أو الرقمية والتي لها رمز ASCII أقل من 32 وأعلى من 126 فستُحَول إلى التمثيل الثُماني للتعامل معها.

عند تعريف مجال من المحارف عند ضبط قيمة المعامل charlist، فاحرص على معرفة كل القيم والأحرف الموجودة بين حديّ بداية ونهاية ذاك المجال.

<?php
echo addcslashes('foo[ ]', 'A..z');
//"\f\o\o\[ \]"
// ستُهرِّب جميع المحارف، سواءً كانت كبيرةً أم صغيرة
// بما في ذلك المحارف الآتية:
// [\]^_`
?>

إذا كانت قيمة رمز ASCII لأوّل محرف في المجال أعلى من قيمة رمز ASCII للمحرف الثاني في المجال،  فلن يُنشَأ أي مجال، بل سيُستَخدم محرف البداية والنهاية والنقطة بينهما لتهريب القيمة المُمرَّرة إلى الدالة. يُمكِن استخدام الدالة ()ord لمعرفة قيمة رمز ASCII لأحد المحارف.

<?php
echo addcslashes("zoo['.']", 'z..A');
// \zoo['\.']
?>

انتبه عند محاولة تهريب المحارف 0 و a و b و f و n و r و t و v لأنه ستحوّل  إلى 0\ و a\ و b\ و f\ و n\ و r\ و t\ و v\ والتي تعدّ محارف تهريب مُعَرَّفة مسبقًا لدى لغة  C واللغات البرمجية المشتقة منها، كما هو حال في لغة PHP. مما يؤدي إلى عدم الحصول على النتيجة المرغوبة في حال استعمال مخارج الدالة addcslashes()‎ لتوليد الكود البرمجي بواسطة هذه الأحرف.

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

تُعيد الدالة السلسلة النصية مع تهريب (escape) المحارف فيها.

سجل التغييرات

الإصدار الوصف
5.2.5 أضيفت سلسلتا التهريب ‎/v و ‎/f.

أمثلة

ستُهرِّب  كل المحارف التي لها رمز ASCII قيمته محصورة بين 0 و 31 إذا كانت قيمة المتغير charlist تساوي "‎\0..\37".

المثال 1: مثال بسيط عن الدالة addcslashes()‎

<?php

$escaped = addcslashes($not_escaped, "\0..\37!@\177..\377");

?>

انظر أيضًا

  • stripcslashes()‎: حذف الخطوط المائلة العكسية التي أضيفت بواسطة الدالة addcslashes()‎.
  • stripslashes()‎: حذف الخطوط المائلة العكسية.
  • addslashes()‎: تهريب سلسلة رموز باستعمال الخطوط المائلة العكسية.
  • htmlspecialchars()‎: تحويل الرموز الخاصة إلى عناصر HTML.
  • quotemeta()‎: اقتباس المحارف الخاصة.

مصادر