السلام عليكم ورحمة الله و بركاته
سوف اقوم فى هذا الموضوع بشرح الدوال 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;
?>
المتغير search والذى سيتم إستبدال عناصره الداخليةكود PHP:$search = array("sw1","sw2");
المتغير replace والذى يضم مصفوفة بها عناصر الإستبدالكود PHP:$replace= array("searched1","searched2");
المتغير text و الذى يحوى النصوص المراد إستبدالهاكود PHP:$text = "sw1 sw2";
المتغير ntext و هو المحتوى على النص بعد إستبداله بإستخدام الدالة str_replaceكود PHP:$ntext = str_replace($search,$replace,$text);
--------
النتيجة :
فى الكود السابق سيقوم بطباعة
searched1 searched2
وهذا يدل على انه استبدل العنصر الاول فى المصفوفة search بالعنصر الاول فى المصفوفة replace
وانه استبدل العنصر الثانى فى المصفوفة search بالعنصر الثانى فى المصفوفة replace
------------------------------------------------------------------------------------------------
الدالة stri_replace
تعمل فى php5 فقط
لذلك اثارت مشاكل فى المواقع الاجنبية
لكن ولله الحمد وجدت الحل لكى تعمل فى php4 بشكل طبيعى(خصوصاً ان معظم سيرفرات العرب تعمل بـphp4)
الدالة البديلة
ضع هذه الاسطر فى ملف php و احفظه و استخدمه
ثم استخدم الدالة str_ireplace بشككل عادىكود 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_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 للتعامل مع الحروف الكبيرة و الصغيرة
-------------------------------------------------------------------------
اتمنى ان تكونوا استفدتوا
واى استفسارات انا جاهز
![]()


رد مع اقتباس

