یکی دیگر از موارد پرکاربرد در کار با رشته ها جایگزین (replace) کردن بخشی از رشته با مقادیر جدیده.
تابعی که برای اینکار استفاده میشه ()str_replace نام داره. این تابع تمام عبارتهای پیدا شده در یک رشته رو با عبارتی که ما به اون میدیم جایگزین میکنه.
شکل کلی
پارامترها:
- 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; ?>
خروجی:
Replacements performed: 1
مثال دوم
<?php echo STR_REPLACE('a','an','This is NOT a array!',$s),'<br>Replacements performed: ' . $s; ?>
خروجی:
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 ?>
خروجی:
شاید انتظار داشتید نتیجه جایگذاری بصورت 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: ?>
خروجی:
همونطور که گفته شد، اگر آیتمهای replace$ کمتر باشن اونوقت از رشته خالی( ” ) برای جاگذاری بقیه آیتمها استفاده میشه.
مثال پنجم
پارامتر search$ از نوع آرایه و replace$ از نوع رشته
<?php $search = array('1','0'); $replace = '1'; $subject = '0 1 1 0 1'; echo str_replace($search, $replace,$subject); ?>
خروجی:
سلام
بهترین سایت اموزشی که تا حالا دیدم اینجا بوده لطفا ادامه بدید
با تشکر 😉
فقط میتونم بگم عالی بود
مرسی مرسی مرسی
همه آموزشها رو دنبال میکنم 🙂
سلام من یه سوال داشتم:
$content = str_replace(‘center’,’center2′, $content);
در خط بالا من میخوام center رو به center2 تغییر بدم. ولی مشکل اینه که من تو صفحه 3 تا Center دارم و فقط می خوام دومی و سومی تغییر کنن!
آیا با ایت تابع می تونم این کار رو انجام بدم؟؟؟؟؟
سلام
به تنهایی نمیتونید اینکارو انجام بدید باید از توابع دیگه مثل strpos هم کمک بگیرید
کد:
سلام من می خواستم اطلاعات رو از textarea بگیره و جایگزینی رو با توجه به متن textarea انجام بدم باید چ کار کنم ممنون می شم راهنمایم کنید
سلام برای اینکار چند روش وجود داره
بهتره سوالتون رو در انجمن مطرح کنید http://www.irDevs.com/forum21.html.
موفق باشید.
سلام وقت بخیر
برنامه ای که یک رشته را گرفته و تمام کارکترهای a را باکارکتر b جایگزین کند.
متشکرم
سلام
تو مثال اول اومده:
echo STR_REPLACE('a','b','This string have some a char');
عالی بود ممنون از پست خوبتون
سلام
ببخشید اینجا این سوال رو میپرسم
وقتی می خواهیم به پایگاه داده متصل بشیم چوطری میشه برای گرفتن داده از ورودی و چک کردنش برای اتصال به پایگاه داده فیلتر گذاشت تا از sqlinjectionجلوگیری کرد؟
سلام
در این باره مطلب زیاد هست.
http://www.irDevs.com/thread-757
http://www.irDevs.com/thread-660
جست و جو کنید “جلوگیری از حملات SQL injection”
سلام عزیز
این متد تو جاوا اسکریپت هم هست که میاد یک کارکتر رو تبدیل به کارکتر دیگه ای میکنه منتها بنده دنبال کدی هستم که بیاد بطور مثال بهش تگ پی شروع و پایلان رو بدم بعد هرجا تگ شروع پی رو دید تا بسته شدن تگ پی کلش رو جایگزین تگ یا پاراگراف دیگه ای کنه . منظورم اینه که بدون در نظر گرفتن محتویات تگ پی خودش و محتویاتش رو تغییر بده به مثلا یک جمله یا کمه
توضیح و راهکار نمیخوام میخوام ببینم کدی دارید که بصورت عملی اینکارو ساده انجام بده یانه ممنون میشم اگه دارید کدش رو در اختیارم بزارید . مرسی
سلام. لطفا سوالات رو در انجمن بپرسید در خدمت هستیم. مچکرم