جمعه, 29 آبان 1394 13:35

جایگزین کردن زیررشته ها در PHP با تابع substr_replace

نوشته شده توسط
این مورد را ارزیابی کنید
(1 رای)

جایگزین کردن زیررشته ها در PHP با تابع substr_replace

زمانی که بخواهیم بخشی از رشته متنی را با رشته متن دیگری جایگزین کنیم از تابع substr_replace() استفاده می کنیم. برای مثال فرض کنید می خواهیم عبارت های نامناسبی که در متنی وجود دارد را فیلتر کنیم و یا فهرستی از شماره تلفن ها یا شماره کارت های اعتباری افراد را داریم و میخواهیم موقع نمایش آنها به کاربران، بخشی از شماره تلفن فیلتر شود. در PHP برای رسیدن به چنین هدفی از تابعی به اسم substr_replace() استفاده می کنیم که در ادامه با نحوه کارکردن با این تابع آشنا می شوید.

دستور کلی تابع substr_replace() به صورت زیر است:

$substring = substr($old_string,$new_substring,$start,$length);

پارامتر $old_string، رشته متنی است که باید به تابع فرستاده شود؛ در این رشته متن، هر چیزی از اندیس $start و به طول $length کاراکتر، با زیررشته $new_substring جایگزین می شود.

اگر $length را وارد نکنیم، این تابع، همه کاراکترها را از اندیس $start تا آخر رشته متن $old_string، با زیررشته $new_substring جایگزین می کند. اگر $length را به تابع فرستاده باشیم، فقط همان تعداد کاراکتر جایگزین می شوند.

print substr_replace('My pet is a blue dog.','fish.',12); 
print substr_replace('My pet is a blue dog.','green',12,4); 
$credit_card = '4111 1111 1111 1111'; 
print substr_replace($credit_card,'xxxx ',0,strlen($credit_card)-4); 

خط اول کد بالا عبارت 'My pet is a fish' را چاپ می کند. چون حرف 'b' اندیس 12 را دارد و کارکترها از اندیس 12 تا پایان رشته متن - یعنی کاراکترهای 'blue dog' - با رشته متن 'fish' جایگزین شده اند.

خط دوم کد بالا عبارت 'My pet is a green dog.' را چاپ می کند. چون حرف 'b' اندیس 12 را دارد و کارکترها از اندیس 12 تا 4 کاراکتر بعد از آن - یعنی کاراکترهای 'blue' - با رشته متن 'green' جایگزین شده اند.

خط سوم کد بالا یک متغیر به نام $credit_card را تعریف و آن را با مقدار '4111 1111 1111 1111' مقداردهی اولیه می کند. سپس در خط چهارم کد بالا، ابتدا از اندیس 0 آن متغیر تا طول رشته منهای 4 کاراکتر - یعنی 15 کاراکتر - با رشته متن 'xxx ' جایگزین می شود. اسکریسپ بالا سرانجام عبارت های زیر را چاپ می کند:

My pet is a fish.
My pet is a green dog. 
xxxx 1111 

اگر پارامتر $start منفی (کوچکتر از صفر) باشد، این تابع، $start کاراکتر از آخر رشته متن $old_string را با رشته متن $new_substring جایگزین می کند.

print substr_replace('My pet is a blue dog.','fish.',-9);
print substr_replace('My pet is a blue dog.','green',-9,4);

خط اول کد بالا عبارت 'My pet is a fish' را چاپ می کند. چون 9 کاراکتر آخر رشته متن اصلی یعنی "blue dog." با رشته متن "fish" جایگزین می شود.

خط دوم کد بالا عبارت 'My pet is a green dog.' را چاپ می کند. چون نهمین کاراکتر از آخر رشته متن اصلی تا 4 کاراکتر بعد از آن - یعنی عبارت "blue" با رشته متن "green" جایگزین می شود. اسکریسپ بالا سرانجام عبارت های زیر را چاپ می کند:

My pet is a fish.
My pet is a green dog.

اگر پارامترهای $start و $length هر دو صفر باشند، رشته متن $new_substring در ابتدای رشته متن اصلی درج می شود.

print substr_replace('My pet is a blue dog.','Title: ',0,0); 

اسکریپت بالا خروجی زیر را چاپ می کند:

Title: My pet is a blue dog. 

 

حالا به چند مثال کاربردی برای کار با تابع substr_replace می پردازیم.

آرایه ای از url های طولانی داریم و می خواهیم فقط 20 حرف اول url ها را چاپ کنیم و بعد از آن عبارت "..." را چاپ کنیم به این معنی که این url ادامه دار است. اسکریپ زیر این کار را برای ما انجام می دهد.

<?php
$urls = array(
			'http://www.behgozar.com/computer/programming/php/855',
			'http://www.behgozar.com/computer/programming/php/856',
			'http://www.behgozar.com/computer/programming/php/857',
			'http://www.behgozar.com/computer/programming/php/858',
			'http://www.behgozar.com/computer/programming/php/859',
			'http://www.behgozar.com/computer/programming/php/860',
			'http://www.behgozar.com/computer/programming/php/861',
			'http://www.behgozar.com/computer/programming/php/862',
			'http://www.behgozar.com/computer/programming/php/865',
			'http://www.behgozar.com/computer/programming/php/866',
			'http://www.behgozar.com/computer/programming/php/867',
			'http://www.behgozar.com/computer/programming/php/868',
			'http://www.behgozar.com/computer/programming/php/870',
			'http://www.behgozar.com/computer/programming/php/871',
			'http://www.behgozar.com/computer/programming/php/872',
			'http://www.behgozar.com/computer/programming/php/875',
			'http://www.behgozar.com/computer/programming/php/876',
			'http://www.behgozar.com/computer/programming/php/908',
			'http://www.behgozar.com/computer/programming/php/1049',
			'http://www.behgozar.com/computer/programming/php/1050');
for($i=0; $i<count($urls);$i++)
{
	echo '<a href="'.$urls[$i].'">'.substr_replace($urls[$i],'...', 20).'</a><br/>';
}
?>

خروجی اسکریپت بالا به این صورت است:

فرض کنید آرایه از از شماره تلفن ها را داریم و می خواهیم چهار شماره اول و چهار شماره آخر آنها را چاپ کنیو به جای سه شماره وسط عبارت "***" را چاپ کنیم. اسکریپ زیر این کار را برای ما انجام می دهد.

<?php
$phones = array("0936...", "0935...", "0913...", "0912...", "0917...", "0916...", "0938...", "0921...", "0914...", "0911...", "0935...");
for($i=0; $i<count($phones);$i++)
{
	echo substr_replace($phones[$i],'***', 4, 3).'<br/>';
}
?>

خروجی اسکریپت بالا به این صورت است:

0936***7632
0935***3214
0913***9652
0912***6113
0917***6934
0916***1499
0938***3210
0921***9653
0914***5456
0911***6546
0935***9642

 

جهت اطلاعات بیشتر درباره تابع substr_replace() به مستندات آن مراجعه کنید: http://www.php.net/substr_replace

 

همچنین بخوانید


کار کردن با رشته متن ها در PHP

تابع substr در PHP

آموزش نحوه کار با پروتکل FTP در PHP

اعتبارسنجی داده ها در PHP

بازدید 1769 بار آخرین ویرایش در پنج شنبه, 19 آذر 1394 22:25

اضافه کردن نظر


کد امنیتی
تازه سازی

جدیدترین های آندروید

جدیدترین های آموزش زبان فرانسوی

جدیدترین های آموزش زبان انگلیسی

جدیدترین های صوتی

جدیدترین های ویندوزفون

جدیدترین های الگوریتم

جدیدترین های آموزش PHP

جدیدترین های پیامک

ورود

رضایت از بهگذر را به گوش گوگل برسانید
Web Analytics

بیشتر بخوانید

اضافه کردن ویجت های قفل صفحه نمایش روی گوشی Galaxy S4

ویجت های قفل صفحه نمایش را به آسانی می توان روی Galaxy S4 فعال کرد اما لازم است تا یکی دو تنظیمات اضافی را به این منظور اعمال کنید.

ولی برای نخستین بار سامسونگ گالاکسی S4 استفاده می کنید ممکن است به نظر برسد که ویجت های قفل صفحه نمایش در آن موجود نیست.

 قفل پیش فرض صفحه نمایش ویجتی از یک ساعت بزرگ همراه با متن "life companion" یا متن دیگری در بالای است. اما S4 بعنوان یک دستگاه مجهز به آندروید 4.2 پشتیبانی کاملی از ویجت های قفل صفحه نمایش دارد. موضوع این است که باید آنها را در تنظیمات قفل صفحه نمایش فعال کنید.

بیشتر بخوانید

بیشتر بخوانید

پشتیبان گرفتن و بازیابی کردن اس ام اس ها و مخاطبین در ویندوز فون 8

بازیابی کردن اس ام اس ها (پیامک ها) و مخاطبین روی کارت حافظه SD همیشه یکی از دغدغه های کاربران ویندوز فون بوده است. تنظیمات ویندوز فون اجازه پشتیبان گیری و بازیابی اس ام اس ها (پیامک ها) بر روی فضای ابری (cloud) را می دهد اما ویندوز فون به صورت پیش فرض قابلیتی ندارد که بوسیله آن بتوانیم از اس ام اس ها (پیامک ها) و مخاطبین گوشی بر روی کارت حافظه SD فایل پشتیبان بگیریم و در مواقع لزوم آن فایل را بازیابی کنیم. اما در این آموزش به شما نرم افزاری را معرفی می کنیم که بوسیله آن می توانیم اس ام اس ها (پیامک ها) و مخاطبین گوشی را بر روی کارت حافظه SD پشتیبان گیری و همچین از روی آن بازیابی کنیم. توجه کنید که بازیابی کردن اس ام اس ها و مخاطبین نرم افزار بدون اینکه قبلا از آنها فایل پشتیبان تهیه نکرده باشید امکان پذیر نیست.

بیشتر بخوانید

الگوریتم ماگزیموم دو عدد

در این مطلب آموزشی ابتدا الگوریتم ماگزیموم دو عدد صحیح را برای حل توسط کامپیوتر طراحی و سپس نمونه کد آن را برای زبان های برنامه نویسی سی شارپ C# و وی بی دات نت VB.NET پیاده سازی می کنیم.

رضایت از بهگذر را به گوش گوگل برسانید