التعامل مع النصوص في البي اتش بي (كامل مدمج) درس يوضح كيفية التعامل مع النصوص في البي اتش بي موضح بالامثلة

الناقل : elmasry | الكاتب الأصلى : @phpnet | المصدر : www.arabteam2000-forum.com

بسم الله الرحمن الرحيم

* في هذه المقالة سنتحدث عن طريقة التعامل مع النصوص في البي اتش بي .
نلاحظ انه في البي اتش بي يجب احاطة اي نص بعلامة تنصيص مزدوجة او واحدة

 'I am a string in single quotes'

"I am a string in double quotes"


-* برنامج البي اتش بي يتعرف على النصوص من خلال مقارنة علامات التنصيص في النص
مع وجود اختلاف بين علامات التنصيص المزدوجة والمفردة حيث يقوم البي اتش بي بتفسير النص بين
علامات التنصيص المزدوجة بينما لا يقوم بتفسير النص داخل علامات التنصيص المفردة
وانما يقوم بطباعته كما هو.

"I am not a valid string since I have unmatching quote marks'

'Me neither!"


في هذا المثال نجد انه تمت احاطة النص بعلامات تنصيص مختلفة مزدوجة او واحدة و البي اتش بي يعطي خطا اذ انه يجب تطابق علامات التنصيص.

$s = "I am a 'single quote string' inside a double quote string";

$s = 'I am a "double quote string" inside a single quote string';



في هذا المثال اعلاه نجد انه تواجدت علامة تنصيص مفردة او مزدوجة - كما في المثال الثاني - داخل الجملة النصية . هنا سيعتقد البي اتش بي انه وصل نهاية الجملة عندما يجد علامة التنصيص.



$s = "I am a \'single quote string\' inside a double quote string";

$s = 'I am a \"double quote string\" inside a single quote string';
'You\'d better escape your apostrophes'


* احدى الحلول المتوفرة تكمن في اضافة علامة الهروب \ قبل علامة التنصيص التي هي محتواة داخل النص كما في الامثلة اعلاه.

$file = "c:\windows\system.ini";
echo $file; // prints c:windowssystem.ini


* في هذا النص نجد انه تتواجد علامة \ داخل النص حيث انه لن يقوم البي اتش بي بطباعتها وسيعتبرها علامة الهروب كما في المثال اعلاه

$file = "c:\\windows\\system.ini";
echo $file; // prints c:\windows\system.ini


* لذا يجب اضافة علامة الهروب \ ايضا
و سيقوم بطباعة الجملة بالطريقة الصحيحة كما في المثال اعلاه

$head = <<<ENDH
$s = 'I am a "double quote string" inside a single quote string';
ENDH;


* احد الطرق لتجاوز هذه المشاكل دون الحاجة الى استخدام علامة الهروب هي باستخدام علامة <<< تتبع بمعرف يختاره المبرمج في بداية النص حيث تكتب في سطر لوحدها ، ثم يكتب المعرف الضي اخترناه سابقا في نهاية النص كما في المثال اعلاه

*** . الان سنتحدث عن الوصل بين النصوص :
يمكن الوصل بين النصوص باستخدام معامل الوصل (.) كما في المثال التالي:

$first_name = 'Charlie';
$last_name  = 'Brown';
$full_name  = $first_name . ' ' . $last_name;


حيث سيطبع الاتي :
Charlie Brown



*** وهنا سنحدث عن استخدام المتغيرات داخل النصوص:
يجب وضع المنتغيرات داخل علامات تنصيص مزدوجة.!!
حيث انه كما سيظهر في المثال القادم عندما نضع المتغير داخل علامة تنصيص مفردة
فلن يقوم البي اتش بي بتفسيرها وسيطبع اسم المتغير.

echo "foo is $foo";      // this prints:  foo is 2
echo 'foo is $foo';      // this prints:  foo is $foo


عند التعامل مع المتغيرات البسيطة فلا توجد مشاكل كما يظهر في المثال التالي ..

echo "value = $foo";
echo "value = $a[$i]";


ولكن عند التعامل مع المتغيرات الاكثر تعقيدا من المفضل
كتابة المتغير خارج علامة التنصيص و استخدام الوصل كما في المثال التالي :
echo 'value = ' . $a[$i][$j];
echo 'value = ' . $this->var;


**** النصوص في اوامر الاس كيو ال :
ايضا عند استخدام النصوص في اوامر الاس كيو ال كما في المثال الاتي :

select * from users where last_name = 'O'Keefe'


من المفضل دائما اشتخدام علامة الهروب او الامر addslashes كما يظهر في الامثلة التالية:
select * from users where last_name = 'O\'Keefe'

$last_name = "O'Keefe";
$sql = "select * from users where last_name = '" . addslashes($last_name) . "'";


**** و اخيرا سنتحدث عن العمليات على النصوص:

يحتوي البي اتش بي على مجموعةمن الدوال التي تقوم بالعمليات على النصوص منها

strcmp() **

ومثال على هذه الدالة هو :
$str1 = 'abc';
$str2 = 'def';

if (!strcmp($str1, $str2)) {
        // remember strcmp() returns zero if the strings are identical
}

if ($str1 == $str2) {
        // PHP can compare strings directly
}

if ($str1 == 'def') {
}


substr()**

ومثال على هذه الدالة هو :

$str = substr('abcdef', 2, 3); // cde

$str = substr('abcdef', -2);     // ef
$str = substr('abcdef', -2, 1); // e

$str = substr('abcdef', 2, -2); // cd


حيث تقوم الدالة اعلاه بقص جزء من النص سواء من بدايته او نهايته حيث يشير العدد الاول البدابة النص و الثاني الى نهايته كما هو موضح في المثال الاتي
str = substr('abcdef', القيمة الاولى,الثانية القيمة );


=============
تم تعديل صغير فى التنسيق من قبل الإدارة