السلام عليكم
إخوتي الأفاضل ،، اليوم جايب لكم دالة مفيدة كمان
هذي الدالة ظهرت منذ إصدارة PHP3.0.6 وفي إصدارات PHP4 منذ PHP4.0.0 فما فوق
وظيفة هذي الدالة هي استبدال النصوص من النوع الثنائي Binary في المتغيرات ..
اسم الدالة : str_replace
بكل سهولة سنخزن نص في متغير ونستبدل إحدى الكلمات في هذا النص بكلمة أخرى ..
الصيغة العامة للدالة:
كود PHP:
mixed str_replace(mixed search, mixed replace, mixed subject);
طبعاً لا تجرب الكود السابق لأنه لن يأتي بأي نتيجة مرضية معك!!
وإنما هذا توضيح للدالة، فإن هذه الدالة تحتاج إلى 3 باراميترات تمرر إليها..
الأول هو النص الثنائي الذي نريد البحث عنه لنستبدله بشيء آخر، واسم هذا المتغير هو search وهو من نوع mixed ..
الثاني هو النص الثنائي الذي نريد استبدال النص الأول به، أي نريد حذف النص الأول ونضع بدلاً منه النص الثاني،، واسم هذا المتغير replace وهو من نوع mixed ..
الثالث هو النص كاملاً، أو المتغير الكامل الذي نريد البحث والاستبدال فيه ، واسم هذا المتغير هو subject وهو من نوع mixed ..
والدالة كاملة من نوع mixed أيضاً، لاحظ ذلك في بداية الجملة ..
عوضاً عن هذه المقدمات، يمكنك المتابعة بالشرح حيث سيكون سهلاً إن شاء الله تعالى ؛
الآن نريد تخزين قيمة نصية ثنائية Binary معينة في متغير وليكن اسمه text$ ثم نستبدل جزء منه بنص آخر..
المثال التالي (الكود) سيوضح ويسهل المهمة إن شاء الله تعالى:
كود PHP:
<?
$text = "This is sBForum website,, welcome here!!";
Echo $text;
$text = str_replace("This is","You are in",$text);
Echo "<BR><BR>$text";
?>
قمنا في المثال السابق بطياعة جملتين على الشاشة ،، الأولى الجملة العادية المخزنة في المتغير text$ وهي:
This is sBForum website,, welcome here!!
ثم قمنا بالبحث عن This is واستبدالها بـ You are in في المتغير text$ وتخزين الناتج في نفس المتغير وحذف النص السابق ..
ثم قمنا بطباعة الناتج فأصبح هكذا:
You are in sBForum website,, welcome here!!
وهكذا قمنا بعملية استبدال بسيطة ..!!
من بداية إصدارة PHP4.0.5 فما فوق ، أصبح بالإمكان استخدام المصفوفات في جميع باراميترات دالة str_replace
فمثلاً إذا كان الباراميتر المسمى subject - وهو المتغير الذي نبحث فيه - عبارة عن مصفوفة Array فإن عملية البحث ستتم في جميع مدخلات المصفوفة (جميع عناصرها).. وسيكون الناتج أيضاً عبارة عن مصفوفة ..
هل ترغبون في طرح مثال لذلك؟؟ هيا بنا...
كود PHP:
<?
$text = array("There are four things",
"This is the fourth thing",
"I'm the fourth in my family",
"four");
Echo "$text[0]<BR>$text[1]<BR>$text[2]<BR>$text[3]";
$text = str_replace("four","4",$text);
Echo "<BR><BR><BR>$text[0]<BR>$text[1]<BR>$text[2]<BR>$text[3]";
?>
في المثال السابق قمنا بتخزين 4 عناصر في مصفوفة Array تسمى text$ كل عنصر منها يحتوي على كلمة four ..
يتم أولاً طباعة محتويات المصفوفة على الشاشة ..
ثم يتم استبدال كلمة four بالرقم 4 في جميع هذه الجمل (العناصر).. ثم يتم طباعة العناصر بعد الاستبدال..
لاحظ الاختلاف بين طباعة عناصر المصفوفة في المرة الاولى وبين طباعة عناصر نفس المصفوفة بعد الاستبدال..
في العنصر الأول كانت الجملة : There are four things
بعد الاستبدال أصبحت: There are 4 things
الجملة الثانية: This is the fourth thing
بعد الاستبدال: This is the 4th thing
الجملة الثالثة: I'm the fourth in my family
بعد الاستبدال: I'm the 4th in my family
العنصر الرابع (الأخير): four
بعد الاستبدال: 4
وهكذا أصبح لدينا مثالين كافيين لفهم كيفية الاستبدال بواسطة دالة str_replace ..
ما رأيكم أن نأخذ الآن مثالاً بحيث إذا كان الباراميتر search وreplace عبارة عن مصفوفات ؟؟!
هيا بنا الآن إذاً ..
كود PHP:
<?
$text = "Hi all, how are you??";
Echo $text;
$search = array("Hi","you");
$replace = array("Hello","u");
$text = str_replace($search,$replace,$text);
Echo "<BR><BR>$text";
?>
في المثال السابق، قمنا أولاً بتخزين قيمة في المتغير text$ وهي:
Hi all, how are you??
ثم قمنا بتعريف مصفوفتين، الاولى تتضمن الكلمات التي نريد البحث عنها في المتغير text$
والثانية تتضمن الكلمات التي نريد استبدال الكلمات التي بحثنا عنها بها ..
فالكلمة الأولى المبحوث عنها هي Hi وستستبدل بكلمة Hello
والكلمة الثانية المبحوث عنها هي you وسوف تستبدل بـ u
يمكنك أيضاً زيادة عدد الكلمات المبحوث عنها عن طريق زيادة عدد عناصر المصفوفة الأولى search$
ثم زيادة عدد عناصر المصفوفة الثانية replace$
ولكن، ماذا إذا كانت عدد عناصر المصفوفة الثانية أقل من الأولى؟؟
إذا حصل ذلك، فإن مترجم PHP سيعتبر أن العناصر الناقصة هي عبارة عن عناصر خالية وسيتم استبدال العناصر المقابلة لها بقيم فارغة..
.. أما إذا كانت المدخلات المبحوث عنها في الباراميتر search$ عبارة عن مصفوفة والمدخلات البديلة في الباراميتر replace$ عبارة عن متغير عادي (لا مصفوفة) فإن عناصر المصفوفة ستستبدل جميعها بنفس العنصر الوحيد الموجود في الباراميتر replace$
وفي الختام، اعذروني على التقصير في الشرح،، وأي نقطة غير واضحة أرجو أن تسأل عنها، فذلك يسرني جداً ..!!
تحياتي للجميع
والسلام عليكم ورحمة الله وبركاته