الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مقال عن التعامل مع النصوص في البي اتش بي (كامل مدمج)

مغلق
بدأه @phpnet في 6 أكتوبر 2006 · 5 رد · 3,343 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

نلاحظ انه في البي اتش بي يجب احاطة اي نص بعلامة تنصيص مزدوجة او واحدة

 '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', القيمة الاولى,الثانية  القيمة );

=============

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

تم تعديل هذه المشاركة بواسطة shreef في 6 أكتوبر 2006 في 16:19

#2

شكرا @phpnet على مجهودك فى المقال و سيتم إضافته لموضوع "فهرس المصادر الهامة" المثبت اعلى المنتدى

و أى حد عنده مقال يحب يفيد بيه اعضاء المنتدى فأحنا بنشجعه انه يضيف مقاله هنا و سيتم تقيمه إن شاء الله ليوضع فى موضوع المصادر هامة .

بالتوفيق

Web Citizen

ShrefInLife.gif

__________

General blog : Shref In Life

#3
shreef كتب:
شكرا @phpnet على مجهودك فى المقال و سيتم إضافته لموضوع "فهرس المصادر الهامة" المثبت اعلى المنتدى

و أى حد عنده مقال يحب يفيد بيه اعضاء المنتدى فأحنا بنشجعه انه يضيف مقاله هنا و سيتم تقيمه إن شاء الله ليوضع فى موضوع المصادر هامة .

بالتوفيق

لا شكر على واجب يا اخي شريف

الحقيقة انا يجب ان اشكركم فقد كانت اولى خطواتي

في البي اتش بي من خلال هذا المنتدى

و سلسلة دروسكم الرائعة جدا

#4

ارائكم يا شباب في الدرس

لدي مقال اخر اقوم بكتابته حاليا لذا من المهم جدا

ان اعرف ارائكم في المقال

#5

شكراَ جزيلاً لك أخي

#6

مشكور على المرور اخوي !!!

هذا الموضوع مغلق.

مواضيع مشابهة