جمعه, 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

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

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


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

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

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

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

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

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

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

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

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

ورود

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

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

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

شاید برای شما هم پیش آمده باشد که اس ام اس حاوی اطلاعات مهمی را به طور اشتباه حذف کرده باشید. ایا تا به حال به این فکر کرده اید که در این شرایط چگونه اس ام اس حذف شده را برگردانید.

در این آموزش تصویری که اختصاصی بهگذر میباشد و در هیچ کجای وب آن را نخواهید یافت شما را با نحوه بازیابی اس ام اس های حذف شده در آندروید آشنا میکنیم.

در آینده نزدیک آموزش تصویری نحوه بازیابی عکس ها، فیلم ها و سایر اطلاعات حذف شده در گوشی های آندرویدی توسط بهگذر منتشر خواهد شد.

با ما همراه باشید.

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

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

چگونه حافظه اشغال شده توسط تلگرام را خالی کنیم

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

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

الگوریتم

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

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