يا حبيباتي يا حلوين كيفكون اليوم رح ندرس درس جديد بتمنى انو تستفيدوا منوا
عن طريقة التعامل مع النصوص في البي اتش بي .
نلاحظ انه في البي اتش بي يجب احاطة اي نص بعلامة تنصيص مزدوجة او واحدة
كود
'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', القيمة الاولى,الثانية القيمة );