تغطية مباشرة لأحداث منتدى الإعلام الجديد المقام بمدينة أبوظبي
هل تقترح تمديد مسابقة سوالف كاست؟

 

العودة   سوالف سوفت > قسم تطوير وبرمجة المواقع للمتقدمين > PHP
المدوّنات البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

رد  
 
LinkBack أدوات الموضوع
عضو فعال
تاريخ التسجيل: Aug 2005-
#1 (permalink)  
استبدال النصوص في PHP


السلام عليكم

إخوتي الأفاضل ،، اليوم جايب لكم دالة مفيدة كمان

هذي الدالة ظهرت منذ إصدارة PHP3.0.6 وفي إصدارات PHP4 منذ PHP4.0.0 فما فوق

وظيفة هذي الدالة هي استبدال النصوص من النوع الثنائي Binary في المتغيرات ..

اسم الدالة : str_replace

بكل سهولة سنخزن نص في متغير ونستبدل إحدى الكلمات في هذا النص بكلمة أخرى ..

الصيغة العامة للدالة:
كود PHP:
mixed str_replace(mixed searchmixed replacemixed 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$

وفي الختام، اعذروني على التقصير في الشرح،، وأي نقطة غير واضحة أرجو أن تسأل عنها، فذلك يسرني جداً ..!!
تحياتي للجميع
والسلام عليكم ورحمة الله وبركاته






__________________
أحمد أبو النصر
Junior php Developer
+20166196074
أحمد أبو النصر غير متواجد حالياً   قديم 09-01-2006, 12:26 PM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Feb 2004-
#2 (permalink)  

جزاك الله خير اخوي






__________________
سبحان الله وبحمده سبحان الله العظيم
alsahernet غير متواجد حالياً   قديم 09-01-2006, 01:11 PM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Nov 2005-
#3 (permalink)  

درس جميل جدا الف شكر اخى الكريم






__________________
سبحان الله وبحمده ... سبحان الله العظيم.
إقرأ .. لتتعلم
[AJAX] سكربت إتصل بنا (ديف كونتاكت) النسخة 2.3.1
MySmartBB
المشروع
ByPHP.NET
Developer. غير متواجد حالياً   قديم 09-01-2006, 01:30 PM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Aug 2005-
#4 (permalink)  

شكراً لمرورك وتعقيبك اخوي alsahernet

والعفو اخوي -Developer-






__________________
أحمد أبو النصر
Junior php Developer
+20166196074
أحمد أبو النصر غير متواجد حالياً   قديم 09-01-2006, 02:56 PM
رد مع اقتباس
رد


 

أدوات الموضوع

تعليمات المشاركة
لا تستطيع كتابة مواضيع
لا تستطيع كتابة ردود
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة



الساعة الآن: 08:39 AM بتوقيت المملكة العربية السعودية