تابع str_replace در PHP

نوشته‌شده در در کار با رشته ها
Loading Likes...

یکی دیگر از موارد پرکاربرد در کار با رشته ها جایگزین (replace) کردن بخشی از رشته با مقادیر جدیده.

تابعی که برای اینکار استفاده میشه ()str_replace نام داره. این تابع تمام عبارتهای پیدا شده در یک رشته رو با عبارتی که ما به اون میدیم جایگزین میکنه.

شکل کلی

mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

پارامترها:

  • search$ – عبارتی است که باید جست و جو شود، میتواند رشته(string) یا آرایه(array) باشد.
  • replace$ – عبارتی است که باید بجای رشته پیدا شده قرار بگیرد، میتواند رشته(string) یا آرایه(array) باشد.
  • subject$ – محتوای رشته ی اصلی است که عملیات Replace روی آن انجام میگیرد.
  • count$ – اگر مشخص شود تعداد جاگذاری های انجام شده را بصورت عددی برمیگرداند. این پارامتر از نسخه 5.0.0 به بعد وجود دارد.

نکاتی در مورد پارامترهای search$ و replace$

  • اگر search$ و replace$ آرایه باشند و تعداد آیتمهای آنها نیز با هم برابر باشند آنوقت هر آیتم search$ با آیتم متناظر در replace$ جایگزین خواهد شد.
  • اگر search$ و replace$ آرایه باشند و آیتمهای replace$ کمتر باشد آنوقت از رشته خالی( ” ) برای جاگذاری بقیه آیتمها استفاده خواهد شد.
  • اگر search$ آرایه و replace$ رشته باشد آنوقت از این رشته برای جاگذاری در تمام آیتمهای search$ استفاده خواهد شد.
  • اگر هر دو رشته باشند،  رشته replace$ بجای رشته search$ قرارخواهد گرفت.

 

مثال ها

مثال اول

دو پارامتر search$ و replace$ از نوع رشته و استفاده از پارامتر اختیاری count$

<?php
 echo STR_REPLACE(' a ',' an ','This is NOT a array!',$c),'<br>Replacements performed: ' . $c;
?>

خروجی:

This is NOT an array!
Replacements performed: 1

 

 مثال دوم

<?php
 echo STR_REPLACE('a','an','This is NOT a array!',$s),'<br>Replacements performed: ' . $s;
?>

خروجی:

This is NOT an anrrany!
Replacements performed: 3

 

مثال سوم

دو پارامتر search$ و replace$ از نوع آرایه و تعداد آیتم های یکسان

<?php
 $search  = array('A', 'B', 'C', 'D', 'E');
 $replace = array('B', 'C', 'D', 'E', 'F');
 $subject = 'ABE';
 echo str_replace($search, $replace,$subject,$c),$c;

# TRACE
#---▼
#1: BBE
#2: CBE
#3: DBE
#4: EBE
#5: FBE
#----▼
#6: FCE
#7: FDE
#8: FEE
#9: FFE
#-----▼
#10:FFF
?>

خروجی:

FFF10

شاید انتظار داشتید نتیجه جایگذاری بصورت BCF باشه اما اینطور نیست! همونطور که براتون Trace کردم ، این تابع میاد A رو به B تبدیل میکنه بعد در همون جا B رو به C تبدیل میکنه و الی آخر تا به کاراکتر یا عبارت پیدا شده بعدی برسه و دوباره همین عملیات برای اون عبارت تکرار میشه. از عمد چنین مثالی زدم تا اگر به چنین چیزی برخوردید متعجب نشید.

 

مثل چهارم

دو پارامتر search$ و replace$ از نوع آرایه و تعداد آیتم های replace$ کمتر از search$

<?php
 $search  = array('A', 'B', 'C', 'D', 'E');
 $replace = array('B', 'C', 'D');
 $subject = 'ABE';
 echo str_replace($search, $replace,$subject,$S),$S;

# TRACE
#---▼
#1: BBE
#2: CBE
#3: DBE
#4:  BE
#----▼
#5:  CE
#6:  DE
#7:   E
#-----▼
#8:   
?>

خروجی:

8

همونطور که گفته شد، اگر آیتمهای replace$ کمتر باشن اونوقت از رشته خالی( ” ) برای جاگذاری بقیه آیتمها استفاده میشه.

 

مثال پنجم

پارامتر search$ از نوع آرایه و replace$ از نوع رشته

<?php
 $search  = array('1','0');
 $replace = '1';
 $subject = '0 1 1 0 1';
 echo str_replace($search, $replace,$subject);
?>

خروجی:

1 1 1 1 1

 



سوالی دارید؟

بدون گرفتن نتیجه اینجا رو ترک نکنید! هر سوالی دارید میتونید در عرض ۱۵ ثانیه ثبت نام و خیلی زود جواب بگیرید.

13 دیدگاه برای «تابع str_replace در PHP»

  1. سلام من یه سوال داشتم:
    $content = str_replace(‘center’,’center2′, $content);
    در خط بالا من میخوام center رو به center2 تغییر بدم. ولی مشکل اینه که من تو صفحه 3 تا Center دارم و فقط می خوام دومی و سومی تغییر کنن!
    آیا با ایت تابع می تونم این کار رو انجام بدم؟؟؟؟؟

  2. سلام من می خواستم اطلاعات رو از textarea بگیره و جایگزینی رو با توجه به متن textarea انجام بدم باید چ کار کنم ممنون می شم راهنمایم کنید

  3. سلام
    ببخشید اینجا این سوال رو میپرسم
    وقتی می خواهیم به پایگاه داده متصل بشیم چوطری میشه برای گرفتن داده از ورودی و چک کردنش برای اتصال به پایگاه داده فیلتر گذاشت تا از sqlinjectionجلوگیری کرد؟

  4. سلام عزیز
    این متد تو جاوا اسکریپت هم هست که میاد یک کارکتر رو تبدیل به کارکتر دیگه ای میکنه منتها بنده دنبال کدی هستم که بیاد بطور مثال بهش تگ پی شروع و پایلان رو بدم بعد هرجا تگ شروع پی رو دید تا بسته شدن تگ پی کلش رو جایگزین تگ یا پاراگراف دیگه ای کنه . منظورم اینه که بدون در نظر گرفتن محتویات تگ پی خودش و محتویاتش رو تغییر بده به مثلا یک جمله یا کمه
    توضیح و راهکار نمیخوام میخوام ببینم کدی دارید که بصورت عملی اینکارو ساده انجام بده یانه ممنون میشم اگه دارید کدش رو در اختیارم بزارید . مرسی

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

64 ÷ = 8