الفرق بين المراجعتين لصفحة: «PHP/addcslashes»

من موسوعة حسوب
< PHP
ط إضافة عنوان الصفحة والتصنيفات
مراجعة الصفحة
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:الدالة <code>addcslashes()‎</code> في PHP}}</noinclude>
<noinclude>{{DISPLAYTITLE:الدالة <code>addcslashes()‎</code> في PHP}}</noinclude>
تضيف الدالة addcslashes()‎‎ الخطوط المائلة العكسية (backslashes) كما في لغة C.
تضيف الدالة <code>addcslashes()‎‎</code> الخطوط المائلة العكسية (backslashes) كما في لغة C.


== الوصف ==
== الوصف ==
سطر 15: سطر 15:


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


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


سطر 35: سطر 29:
</syntaxhighlight>
</syntaxhighlight>


إذا كانت قيمة رمز ASCII لأوّل محرف في المجال أعلى من قيمة رمز ASCII للمحرف الثاني في المجال،  فلن يُنشَأ أي مجال، بل سيُستَخدم محرف البداية والنهاية والنقطة بينهما لتهريب القيمة المُمرَّرة إلى الدالة. يُمكِن استخدام الدالة ()ord لمعرفة قيمة رمز ASCII لأحد المحارف.<syntaxhighlight lang="php">
إذا كانت قيمة رمز ASCII لأوّل محرف في المجال أعلى من قيمة رمز ASCII للمحرف الثاني في المجال،  فلن يُنشَأ أي مجال، بل سيُستَخدم محرف البداية والنهاية والنقطة بينهما لتهريب القيمة المُمرَّرة إلى الدالة. يُمكِن استخدام الدالة <code>[[PHP/ord|()ord]]</code> لمعرفة قيمة رمز ASCII لأحد المحارف.<syntaxhighlight lang="php">
<?php
<?php
echo addcslashes("zoo['.']", 'z..A');
echo addcslashes("zoo['.']", 'z..A');
// \zoo['\.']
// \zoo['\.']
?>
?>
</syntaxhighlight>انتبه عند محاولة تهريب المحارف 0 و a و b و f و n و r و t و v لأنه ستحوّل  إلى 0\ و a\ و b\ و f\ و n\ و r\ و t\ و v\ والتي تعدّ محارف تهريب مُعَرَّفة مسبقًا لدى لغة  C واللغات البرمجية المشتقة منها، كما هو حال في لغة PHP. مما يؤدي إلى عدم الحصول على النتيجة المرغوبة في حال استعمال مخارج الدالة addcslashes()‎ لتوليد الكود البرمجي بواسطة هذه الأحرف.
</syntaxhighlight>انتبه عند محاولة تهريب المحارف 0 و a و b و f و n و r و t و v لأنه ستحوّل  إلى <code>0\</code> و <code>a\</code> و <code>b\</code> و <code>f\</code> و <code>n\</code> و <code>r\</code> و <code>t\</code> و <code>v\</code> والتي تعدّ محارف تهريب مُعَرَّفة مسبقًا لدى لغة  C واللغات البرمجية المشتقة منها، كما هو حال في لغة PHP. مما يؤدي إلى عدم الحصول على النتيجة المرغوبة في حال استعمال مخارج الدالة <code>addcslashes()‎</code> لتوليد الكود البرمجي بواسطة هذه الأحرف.


=== القيم المعادة ===
=== القيم المعادة ===
سطر 50: سطر 41:
=== سجل التغييرات ===
=== سجل التغييرات ===
{| class="wikitable"
{| class="wikitable"
|الإصدار
!الإصدار
|الوصف
!الوصف
|-
|-
|5.2.5
|5.2.5
|أضيفت سلسلتا التهريب ‎/v و ‎/f.
|أضيفت سلسلتا التهريب <code>‎/v</code> و <code>‎/f</code>.
|}
|}


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


==== المثال 1: مثال بسيط عن الدالة addcslashes()‎ ====
المثال 1: مثال بسيط عن الدالة <code>addcslashes()‎</code><syntaxhighlight lang="php">
<syntaxhighlight lang="php">
<?php
<?php


سطر 71: سطر 61:
</syntaxhighlight>
</syntaxhighlight>


=== انظر أيضًا ===
== انظر أيضًا ==
* stripcslashes()‎: حذف الخطوط المائلة العكسية التي أضيفت بواسطة الدالة addcslashes()‎.
* <code>[[PHP/stripcslashes|stripcslashes()‎]]</code>: حذف الخطوط المائلة العكسية التي أضيفت بواسطة الدالة <code>addcslashes()‎</code>.
* stripslashes()‎: حذف الخطوط المائلة العكسية.
* <code>[[PHP/stripslashes|stripslashes()‎]]</code>: حذف الخطوط المائلة العكسية.
* addslashes()‎: اقتباس سلسلة رموز باستعمال الخطوط المائلة العكسية.
* <code>[[PHP/addslashes|addslashes()‎]]</code>: تهريب سلسلة رموز باستعمال الخطوط المائلة العكسية.
* htmlspecialchars()‎: تحويل الرموز الخاصة إلى عناصر HTML.
* <code>[[PHP/htmlspecialchars|htmlspecialchars()‎]]</code>: تحويل الرموز الخاصة إلى عناصر HTML.
* quotemeta()‎: اقتباس المحارف الخاصة.
* <code>[[PHP/quotemeta|quotemeta()‎]]</code>: اقتباس المحارف الخاصة.


=== مصادر ===
== مصادر ==
* صفحة الدالة addcslashes في توثيق PHP الرسمي.
* [http://php.net/manual/en/function.addcslashes.php صفحة الدالة addcslashes في توثيق PHP الرسمي].
[[تصنيف:PHP]]
[[تصنيف:PHP]]
[[تصنيف:PHP Function]]
[[تصنيف:PHP Function]]
[[تصنيف:PHP String]]
[[تصنيف:PHP String]]

مراجعة 14:47، 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()‎: اقتباس المحارف الخاصة.

مصادر