الدالة addcslashes()
في PHP
تضيف الدالة 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()
: اقتباس المحارف الخاصة.