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

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

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


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

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

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

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

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

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

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

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

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

ورود

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

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

به اشتراک گذاری اینترنت از طریق wifi

استفاده از اینترنت امروزه یکی از نیازهای اساسی جامعه مدرن است که گویی زندگی امروزی بدون آن میسر نمیباشد. در این آموزش قصد داریم نحوه ایجاد یک شبکه اختصاصی wireless در آخرین نسخه از ویندوز یعنی ویندوز 8 و استفاده از اینترنت این شبکه برای گوشی های آندروید را به صورت گام به گام و تصویری به شما آموزش دهیم.

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

نکته: در این نوشتار از آخرین نسخه های سیستم عامل های ویندوز (ویندوز 8) و آندروید (ژلی بین 4.1.1) استفاده شده اما شما می توانید با کمی ذکاوت از این آموزش در نسخه های پایین تر نیز استفاده نمایید.

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

Love Story lyrics

در این یادداشت متن ترانه زیبای Love Story (داستان عشق) به خوانندگی Andy Williams (اندی ویلیامیز) را برای شما انتخاب کرده ایم. در ادامه همچنین می توانید چند اجرای بی کلام از این آهنگ را که توسط نوازندگان بزرگ دنیای موسیقی نواخته شده است دانلود کنید.

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

Window Phone 8 Internet Explorer 

یکی از قابلیت های مهمی که در هر گوشی می تواند وجود داشته داشته باشد و بسیاری از کاربران گوشی های موبایل مایل هستند تا تلفن همراهشان از آن بهره مند باشد قابلیت کپی (Copy) و پیست (Paste) کردن متن است. سیستم عامل ویندوز فون 8 هم از این قابلیت مهم بی بهره نیست و در آموزش تلاش می کنیم تا نحوه ی کپی و پیست کردن یک متن در گوشی های مجهز به سیستم عامل ویندوز فون 8 را به شما آموزش دهیم.

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

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