تشخیص و تبدیل لینک های درون متن به لینک قابل کلیک با php
اگر درون یک متن ، لینک یا لینک هایی باشد ، به کمک تابع preg_replace یا preg_replace_callback در php میتوان این لینک ها را قابل کلیک کرد تا کاربر با کلیک روی آن ، به وب سایت آن لینک هدایت شود.
منظور از قابل کلیک کردن ، یعنی آن لینک درون تگ a مانند مثال زیر قرار گیرد تا با کلیک روی آن به وب سایت هدف هدایت شویم.
<a hef="https://zhupin.ir" >https://zhupin.ir</a>
به عنوان مثال ما یک متن داریم که در زیر مشاهده میکنید:
سلام . لطفا برای دانلود یا خرید افزونه های whmcs به https://zhupin.ir/product-category/whmcs-addons مراجعه کنید و برای مشاهده بلاگ و خواندن مطالب آموزشی به https://zhupin.ir/blog مراجعه کنید.
در متن بالا میبینید که دو عدد لینک موجود هست. هنگامی که خواننده این متن بخواهد به آن لینک ها وارد شود مجبور است آنها را کپی کند و در مرورگر الصاق و اینتر کند. خب طبیعتا پروسه حوصله سر بری هست.
به کمک php و تابع preg_replace_callback که همان preg_replace است میتوان تمام این لینک ها را قابل کلیک کنیم.
تابع preg_replace حد اقل 3 آرگومان میگیرد که اولین آرگومان پترن یا regex است که الگو را میسازد ، یعنی توسط این regex میگوییم چه چیزی یا چیزهایی باید تغییر کند . آرگومان دوم هم تغییر دلخواه ما است یعنی هر آنچه در آرگومان اول یافت شد در آرگومان دوم در دسترس است و میتوان ازش استفاده کرد. آرگومان سوم هم طبعا خود متنی است که قرار است درون آن کنکاش کنیم.
تابع preg_replace_callback هم همان preg_replace است فقط در آرگومان دوم به جای رشته یک تابع کار تبدیل را انجام میدهد.
<?php
$my_text = 'سلام . لطفا برای دانلود یا خرید افزونه های whmcs به https://zhupin.ir/product-category/whmcs-addons مراجعه کنید و برای مشاهده بلاگ و خواندن مطالب آموزشی به https://zhupin.ir/blog مراجعه کنید.';
$regexp = "/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i";
$my_text = preg_replace_callback($regexp , function($m){
return '<a href="'.$m[0].'" target="_blank">'.$m[0].'</a>';
},$my_text );
echo $my_text ;
?>
ارسال نظر
جهت قرار دادن کد در متن کامنت ، متن مورد نظر را انتخاب کنید و دکمه بالا را بزنید