السلام عليكم ورحمة الله و بركاته
سوف اقوم فى هذا الموضوع بشرح الدوال str_replace , str_ireplace
اولاً
str_replace
تعمل فى php 4 , php 5
عمل الدالة
str_replace ( mixed search, mixed replace, mixed subject );
مع إستبدال mixed_search بالمصفوفة المراد إستبدال عناصرها او الكلمة المراد إستبدالها
وإستبدال mixed_replace بالمصفوفة المراد إستخدام عناصرها بالإستبدال او الكلمة المراد إستخدامها بالإستبدال.
تطبيق على الدالة
افتح محرر الphp تبعك (notebad إن لم يكن لديك محرر متقدم)
ضع هذا الكود
كود PHP:
<?php
$search = array("sw1","sw2");
$replace= array("searched1","searched2");
$text = "sw1 sw2";
$ntext = str_replace($search,$replace,$text);
echo $ntext;
?>
شرح الكود
كود PHP:
$search = array("sw1","sw2");
المتغير search والذى سيتم إستبدال عناصره الداخلية
كود PHP:
$replace= array("searched1","searched2");
المتغير replace والذى يضم مصفوفة بها عناصر الإستبدال
كود PHP:
$text = "sw1 sw2";
المتغير text و الذى يحوى النصوص المراد إستبدالها
كود PHP:
$ntext = str_replace($search,$replace,$text);
المتغير ntext و هو المحتوى على النص بعد إستبداله بإستخدام الدالة str_replace
--------
النتيجة :
فى الكود السابق سيقوم بطباعة
searched1 searched2
وهذا يدل على انه استبدل العنصر الاول فى المصفوفة search بالعنصر الاول فى المصفوفة replace
وانه استبدل العنصر الثانى فى المصفوفة search بالعنصر الثانى فى المصفوفة replace
------------------------------------------------------------------------------------------------
الدالة stri_replace
تعمل فى php5 فقط
لذلك اثارت مشاكل فى المواقع الاجنبية
لكن ولله الحمد وجدت الحل لكى تعمل فى php4 بشكل طبيعى(خصوصاً ان معظم سيرفرات العرب تعمل بـphp4)
الدالة البديلة
ضع هذه الاسطر فى ملف php و احفظه و استخدمه
كود PHP:
<?php
if(!function_exists('str_ireplace')) {
// Andrea Giammarchi [www.devpro.it] 2005/12/23
function str_ireplace($find, $replace, $str) {
$tmpf = array(
'\\','/','[',']','(',
')','*','+','-','?',
'^','$','.','|','{','}'
);
$tmpr = array(
'\\\\','\/','\[','\]','\(',
'\)','\*','\+','\-','\?',
'\^','\$','\.','\|','\{','\}'
);
if(!is_array($find))
$find = array($find);
for($a = 0, $b = count($find); $a < $b; $a++)
$find[$a] = '/(?i)'.str_replace($tmpf, $tmpr, $find[$a]).'/';
return preg_replace($find, $replace, $str);
}
}
?>
ثم استخدم الدالة str_ireplace بشككل عادى
وظيفة الدالة :
تعمل مثل str_replace بالظبط لكنها تعمل بحساسية(Case-insensitive)
تطبيق على الدالة
افتح ملف جديد
وضع الكود
كود PHP:
<?php
$search = array("wOrD","ReP");
$replace= array("Word","Rep");
$text = "WoRD rEp";
$ntext = str_ireplace($search,$replace,$text);
echo $ntext;
?>
تقريباً نفس الكود السابق
النتيجة
سيطبع كلمة Word Rep
--------------------------
الإختلاف عن str_replace
لكن إن وضعت نفس الكود السابق و إستخدمت str_replace فلن يقوم بإستبدالها لان بعض الحروف كابيتال و بعضها سمال ولذلك صممت str_ireplace للتعامل مع الحروف الكبيرة و الصغيرة
-------------------------------------------------------------------------
اتمنى ان تكونوا استفدتوا
واى استفسارات انا جاهز