آگهی
article

نمایش قسمتی از متن و پاراگراف با PHP

php-limit-word

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

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


یکی از روش های نمایش قسمتی از متن یا پاراگراف در PHP، تعیین تعداد و میزان کلماتی است که قصد داریم در خروجی نشان داده شوند، برای این کار از سه تابع explode ، implode و array_splice استفاده می کنیم که در تابع نمونه کد زیر این سه را باهم ترکیب کرده ایم.
<?php
function limitWord($string, $limit){
    $words = explode(" ",$string);
    $output = implode(" ",array_splice($words,0,$limit));
    return $output;
}
?>
برای فراخوانی تابع، کافی است پاراگراف مورد نظر را در یک متغیر تعریف و متغیر را (به عنوان آرگیومنت اول) به همراه تعداد کلمات مورد نظر (به عنوان آرگیومنت دوم) و به صورت زیر فراخوانی کنید.
<?php
$string = "آموزش کاربردی پی اچ پی نمایش قسمتی از متن و پاراگراف";
echo limitWord($string, 5);
?>
به این صورت در خروجی، تنها 5 کلمه اول از مقادیر متغیر فرضی string را خواهیم داشت.
توضیح:
- تابع explode با دریافت یک مقدار آرگیومنت به عنوان جداکننده (در اینجا فضای خالی یا " ")، متن مورد نظر را به صورت آرایه ای از کلمات تبدیل می کند.
- در قسمت بعدی، تابع implode مجددا آرایه ها را تبدیل به یک رشته می کند، البته در اینجا array_splice باعث می شود که تنها بخش خاصی از متن مورد نظر به خروجی ارسال شود.
نکته: برای محاسبه تعداد کلمات موجود در آرایه، می توانید از sizeof هم استفاده کنید.
<?php
$words = explode(" ",$string);
echo sizeof($words);
?>
به این صورت می توانید برنامه خود را هوشمند تر سازید؛ به فرض اگر تعداد کلمات یک متن از مقادیر مورد نظر شما بیشتر بود، قسمت array_splice اجرا شود و یا ایده های دیگری که ممکن است به ذهنتان برسد.

نمایش قسمتی از متن به صورت شمارش حروف  


یک روش دیگر برای انتخاب و نمایش قسمتی از یک متن، شمارش تعداد حروفی است که تمایل داریم به همان اندازه به خروجی ارسال شود، برای انجام این کار از تابع substr (برای حروف فارسی از mb_subsrt) می توانیم استفاده کنیم.
<?php
$string = "آموزش کاربردی پی اچ پی نمایش قسمتی از متن و پاراگراف";
echo mb_substr($string, 0, 25, mb_detect_encoding($string));
?>
در حال حاضر تابع substr تنها از استاندارد ASCII پشتیبانی می کند و برای کلمات فارسی چندان کاربردی نیست، چرا که هر حرف فارسی در تابع substr دو کاراکتر حساب می شود و از این گذشته، در این تابع گاهی مواقع کاراکترهای غیر استاندارد در انتهای متن مورد نظر به خروجی داده می شود که این موضوع به دلیل یونیکد حروف فارسی است، برای رفع مشکل بهتر است از تابع mb_substr مطابق با نمونه بالا استفاده کنید.

نمایش قسمتی از متن و پاراگراف در MySQL


علاوه بر روش های بالا که صرفا متکی بر کدهای PHP و توابع آن هستند، در MySQL و به هنگام پرس و جو یا همان Query نیز این امکان وجود دارد که بتوانیم نتایج را محدود به تعداد کلمات خاصی کنیم، برای این کار از تابع SUBSTRING و به شکل نمونه زیر استفاده می کنیم.
mysqli_query($con, "SELECT id, SUBSTRING(text,1,30) as text FROM articles ORDER BY id DESC LIMIT 1");
در مثال بالا، با استفاده از تابع SUBSTRING در MySQL از جدول فرضی articles، ستون text کاراکترهای 1 تا 30 را انتخاب کرده ایم، البته این تابع نیز نسبت به حروف فارسی در مقایسه با حروف انگلیسی، رفتاری متفاوت دارد.
sectionدسته بندی: آموزش کاربردی » PHP
related مطالب بیشتر:
» تبدیل تاریخ میلادی، شمسی با مبدل JDF در PHP
» ارسال ایمیل با PHP و کلاس phpmailer
» آموزش ساخت نقشه XML سایت (Sitemap) با PHP و MySQL
» ساخت فید خوان آر اس اس (RSS Feed Reader) با PHP
» ساخت منوی هوشمند با PHP و CSS
commentنظرات (۶۴ یادداشت برای این مطلب ارسال شده است)
more یادداشت های جدید بر اساس تاریخ ارسال در انتهای یادداشت های موجود نمایش داده می شوند.
نویسنده: محمود
زمان: ۱۱:۲۷:۵۶ - تاریخ: ۱۳۹۷/۰۵/۲۱
من هنوز اول راه هستم ولی خیلی دوست دارم این زبان را بصورت کامل یاد بگیرم. این کدها جدولی با ردیف های مشخص را نشان می دهد. لطفن کدها را طوری تغییر بدهید که با انتخاب (زرد کردن) هر row که انتخاب کردم بشود آن را حذف کرد. نه بصورتی که الان است. در ضمن آیا میشود شماره ردیف ها خاصیت ol را دارا باشند یعنی با حذف ردیف 3 ، شماره ها به هم نخورند و دوباره 3 و 4 5 .. شود. اگر ممکن است کد جاوا اسکریپ آن را نیز بنویسید متشکر هستم.
حذف شد
پاسخ: 
باید سعی کنید خودتان حداقل بخشی از کدها را بنویسید و صرفا به صورت موردی در هر قسمت دچار مشکل بودید مطرح نمائید تا بررسی گردد، اینگونه موارد زمانبر بوده و نیاز به کدنویسی اختصاصی دارد، به هر صورت برای مشکلاتی که مطرح کرده اید می توانید توابع را به شکل زیر تغییر دهید (تست شده):
<script type="text/javascript">
var selected = 0;
function myclick(_id){
if(selected != 0 && document.getElementById(selected) != null){
document.getElementById(selected).style.background = "#FFFFFF";
}

document.getElementById(_id).style.background = "yellow";
selected = _id;
}
function myDeleteFunction(){
if(selected > 0){
var row = document.getElementById(selected);
var table = row.parentNode;

while(table && table.tagName != 'TABLE'){
table = table.parentNode;
}

if(!table){
return;
}

table.deleteRow(row.rowIndex);
reSortTable();
}
}
function reSortTable(){
var table = document.getElementById("myTable");
var rows = table.rows.length;

for(var i = 1; i < rows; i++){
table.rows[i].cells[3].innerHTML = i;
}
}
</script>
طراحی و خطایابی نیازمند تسلط شما در جاوا اسکریپت است در غیر اینصورت به راحتی و با چند ایراد جزئی با خطاهای مختلف روبرو شده و معمولا کل برنامه از کار می افتد!
نکته: بهتر است ردیف اول آی دی 0 داشته باشد که در اینجا ظاهرا مقدار 2 را در نظر گرفته اید!
نویسنده: امیر
زمان: ۱۹:۴۸:۱۶ - تاریخ: ۱۳۹۷/۰۶/۲۲
ممنون بابت آموزش
نویسنده: مانی
زمان: ۲۱:۲۰:۴۹ - تاریخ: ۱۳۹۷/۱۰/۱۹
سلام وقت بخیر
چطور میشه یک صفحه سایت رو درون یک صفحه html نمایش داد ؟ نمیخوام از iframe استفاده کنم و میخوام با html و php باشه
پاسخ: 
لطفا در خصوص استفاده از تابع file_get_contents یا curl در PHP جستجو کنید، با این توابع می توانید خروجی صفحه سایت را دریافت و در سایت خود نمایش دهید.
نویسنده: امیرمحمد
زمان: ۱۹:۳۰:۵۳ - تاریخ: ۱۳۹۸/۰۸/۰۸
سلام و خسته نباشید استاد
بنده میخوام بین دو کد زیر که مشخص کردم رو به دست بیارم
// ---------------------set
سلام
// ---------------------set
کلمه (سلام) رو بدست بیارم بین دو کد بالا
پاسخ: 
در صورتی که الگوی مد نظر ثابت و به صورت نمونه باشد روش زیر کاربرد دارد:
<?php
$str = '// ---------------------set
سلام
// ---------------------set';

preg_match('/(\/\/[\s]*[\-]+set)(.+)(\/\/[\s]*[\-]+set)/isU', $str, $matches);
//print_r($matches);
echo $matches[2];
?>
more لطفا پیش از ارسال یادداشت نکات زیر را مد نظر داشته باشید:
- مواردی که به کلی خارج از موضوع این مطلب هستند را در فرم منوی "تماس با ما" مطرح و پاسخ را از طریق ایمیل دریافت کنید.
- به سوالات کلی، مبهم، غیرضروری و مشکلاتی که تلاشی برای رفع آن نکرده باشید پاسخ خاصی داده نخواهد شد.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین قرار دهید تا امکان تست و بررسی وجود داشته باشد.
- تمام یادداشت ها بررسی و برای هر کاربر زمان مشخصی جهت پاسخگویی در نظر گرفته می شود، لذا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.




9 × 1
 refresh
نکته:
با توجه به تاریخ نگارش آموزش های سایت و پیشرفت تکنولوژی های مرتبط با وب در سالیان اخیر، محتوای برخی از مطالب قدیمی ممکن است نیاز به ویرایش و به روزرسانی داشته باشد که این کار هم زمان با تهیه نسخه جدید «وبگو» به مرور در حال انجام است، لطفا در استفاده از مطالب سایت به این نکته دقت داشته و حتی المقدور از چند منبع مختلف استفاده نمائید.
آخرین دیدگاه ها
form حامد
در:
عالی بود
۲۱:۳۸:۳۱ ۱۳۹۸/۱۱/۰۷

form ناشناس
در:
سلام خیلی ممنون بابت پاسخ سریعتون خیلی دنبال همین دو خط کد بودم برای یادگیری سریع ریجکس ولی با سرچ پیدا نکردم و...
۱۸:۰۳:۴۳ ۱۳۹۸/۱۱/۰۷

form فرید
در:
درود بشما، میخواستم بدونم مثل کلمه @، کلمه ایی ساین هم داریم؟ با تشکر
۱۲:۱۹:۰۷ ۱۳۹۸/۱۱/۰۷

form ناشناس
در:
سلام میشه لطفا به سوالم جواب بدید من می خوام با استفاده از عبارات با قاعده تمام تگ های html رو تشخیص بدم...
۱۰:۱۳:۰۵ ۱۳۹۸/۱۱/۰۷

form PewDiePie
در:
سلام چطور می تونم این کد رو یه لینک هم بهش اضافه کنم یعنی این که وقتی عکس رو می بینی طرف بتونه...
۲۳:۳۶:۲۶ ۱۳۹۸/۱۱/۰۶

form رسول
در:
سلام میخوام بجای نمایش متن، متن موجود در یه لینکو بهم نشون بده ممنون میشم کمکم کنید
۱۳:۳۸:۱۸ ۱۳۹۸/۱۱/۰۶

form حسن
در:
من مطابق کد نوشته شده شما میخواستم آدرس
۱۴:۱۰:۱۳ ۱۳۹۸/۱۱/۰۵

form saemrezaei
در:
سلام واقعا عالییه خیلی استفاده کردم به وبلاگم سر بزن لطفا.
۱۳:۳۷:۳۴ ۱۳۹۸/۱۱/۰۵

form نصراله رضایی
در:
سلام در ادمین های گذشته که باز می کنم تصاویر مشاهده نمی شود و من را به آدرس Huge domains.com ارجاع می...
۲۲:۳۹:۵۳ ۱۳۹۸/۱۱/۰۴

form نقدی زاده
در:
واقعا مرسی یه overflow-y:hidden به body دادم اسکرل افقی برای صفحه نمایش تبلت از بین رفت
۱۴:۴۴:۱۳ ۱۳۹۸/۱۱/۰۴

form وحید پوربشیری
در:
سلام لطفا یکی که خوب جاوا اسکریپت بلده بیاد به این آیدی ت.ل.گ.ر.ا.م Alpha2020@ یه کد برام بنویسه پول هم میدم
۱۱:۱۲:۳۲ ۱۳۹۸/۱۱/۰۲

form امین
در:
سلام تشکر بابت راهنماییتون. منظور من این بود که: الان با ثبت نام کاربر a در سایت اطلاعاتش در دیتابیس ثبت میشه و یک پوشه...
۰۳:۱۲:۴۰ ۱۳۹۸/۱۱/۰۲

form شریفی
در:
سلام معنی متن زیر چیست؟
۱۸:۲۸:۰۹ ۱۳۹۸/۱۱/۰۱

form امین
در:
سلام خسته نباشید یه اسکریپت دارم که وقتی کاربر ثبت نام میکنه یه پوشه و محتواش ایجاد میشه. میخوام یه صفحه با هر ثبت نام...
۱۴:۱۸:۵۱ ۱۳۹۸/۱۰/۳۰

form Admin
در:
سلام دوست عزیز. میشه بگویید چگونه میتوان در وبلاگ کادری را باز کرد که بازدید کنندگان بتوانند در آن چیزی بنویسند. ممنون میشم...
۱۱:۲۸:۵۰ ۱۳۹۸/۱۰/۳۰
آگهی