• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
نمایش قسمتی از متن
#1
با سلام دوستان من می خواهم گزینه ادامه مطلب رو نمایش بدم به چه صورت باید اقدام کنم ؟ مثل ادامه مطلب که تو وبلاگ ها هست که مثلا 300 کاراکتر رو نمایش میده بقیه رو باید بری تو ادامه مطلب بخونی ، برا این کار دو کار میشه انجام داد یکی اینکه یک فیلد دیگه به دیتا بیس اضافه کرد و قسمتی از متن رو به ان داد و ان رو در صفحه اصلی نمایش داد و در صفحه ادامه مطلب اصل مطلب رو یکی هم میشه بدون اینکه حافظه اضافی برای مطلب کوتاه حدر بدیم همون مطلب اصلی رو فیلتر کنیم مثلاً از اول 300 یا هر چند کارکتر رو نمایش بده من می خواهم حالت دوم رو انجام بدم ممنون می شوم راهنمایی بفرمایید
  پاسخ
تشکر شده توسط :
#2
سلام !
نمی دونم منظور شمارو خوب متوجه شدم یا نه ، مثلاً اگر متن پُست 5000 کاراکتر هست و شما میخواید فقط 300 کاراکتر اونرو نمایش بدید ، میتونید با استفاده از substr و یا توابع مشابه ، تعداد مشخصی از کاراکتر هارو جدا کرده و به نمایش بگذارید و برای زیبایی کار به انتهای اون یک .... هم اضافه کنید...


نحوه استفاده از تابعی که عرض کردم خدمتتون :

کد پی‌اچ‌پی:
echo substr('abcdef'04);  // abcd 

حالا شما میتونید بگید از 0 تا 300 رو بگیر و به من بده !
امری بود در خدمتم
موفق باشید Heart
  پاسخ
تشکر شده توسط :
#3
این یه تابع از ci که فکر کنم به دردت بخوره
کد پی‌اچ‌پی:
Word Limiter
 
*
 * 
Limits a string to X number of words.
 *
 * @
access    public
 * @
param    string
 
* @param    integer
 
* @param    string    the end characterUsually an ellipsis
 
* @return    string
 
*/

    function 
word_limiter($str$limit 100$end_char '…')
    {
        if (
trim($str) == '')
        {
            return 
$str;
        }

        
preg_match('/^\s*+(?:\S++\s*+){1,'.(int) $limit.'}/'$str$matches);

        if (
strlen($str) == strlen($matches[0]))
        {
            
$end_char '';
        }

        return 
rtrim($matches[0]).$end_char;
    } 

  پاسخ
تشکر شده توسط : parvane
#4
در حالت کلی استفاده از Regular Expression از سرعت پردازشی پایین تری نسبت به توابع موجود برای پردازش رشته داره. بهتر نیست از این توابع استفاده بشه اینجا؟!
The difference between stupidity and genius is that genius has its limits. - Albert Einstein

"SUCCESS IS NOT A DESTINATION , IT'S A JOURNEY"
غایب
  پاسخ
تشکر شده توسط :
#5
(۱۳۹۰ اردیبهشت ۱۸, ۱۱:۲۹ ق.ظ)sajjilove نوشته: در حالت کلی استفاده از Regular Expression از سرعت پردازشی پایین تری نسبت به توابع موجود برای پردازش رشته داره. بهتر نیست از این توابع استفاده بشه اینجا؟!

درباره صدم ثانیه صحبت میکنید ؟
  پاسخ
تشکر شده توسط :
#6
(۱۳۹۰ اردیبهشت ۱۸, ۱۲:۵۹ ب.ظ)Na3r نوشته:
(۱۳۹۰ اردیبهشت ۱۸, ۱۱:۲۹ ق.ظ)sajjilove نوشته: در حالت کلی استفاده از Regular Expression از سرعت پردازشی پایین تری نسبت به توابع موجود برای پردازش رشته داره. بهتر نیست از این توابع استفاده بشه اینجا؟!

درباره صدم ثانیه صحبت میکنید ؟
من کلی گفتم عزیز. به هرحال این هم روشی است. همین صدم ثانیه در مورد 1000 مورد تبدیل به 10 ثانیه میشه...
درباره Perfiormance وقتی صحبت میشه باید حلقه های بزرگتر از 1000000 تایی یا متن های 1000 صفحه ای رو در نظر گرفت. اینجا همچین چیزی صادق نیست ولی باز هم به نظر من سادگی استفاده از توابع موجود به پیچیدگی استفاده از Regex ارجعیت پیدا میکنه....
The difference between stupidity and genius is that genius has its limits. - Albert Einstein

"SUCCESS IS NOT A DESTINATION , IT'S A JOURNEY"
غایب
  پاسخ
تشکر شده توسط :
#7
شما اصلا دقت کردی کار این تابع چیه ؟
کد پی‌اچ‌پی:
<?php
$str 
" ولی باز هم به نظر من سادگی استفاده از توابع موجود به پیچیدگی استفاده از Regex ارجعیت پیدا میکنه....";

echo 
substr($str010);

function 
word_limiter($str$limit 100$end_char '…')
    {
        if (
trim($str) == '')
        {
            return 
$str;
        }

        
preg_match('/^\s*+(?:\S++\s*+){1,'.(int) $limit.'}/'$str$matches);

        if (
strlen($str) == strlen($matches[0]))
        {
            
$end_char '';
        }

        return 
rtrim($matches[0]).$end_char;
    }

    echo 
'<br>'.word_limiter($str,10);
?>

خروجی substr
نقل قول:ولی ب

خروجی تابع
نقل قول:ولی باز هم به نظر من سادگی استفاده از توابع…





  پاسخ
تشکر شده توسط :
#8
من خودم اول اومدم کل کاراکتر اون متن رو در آوردم و بعد با mb_substr که کاراکتر فارسی هم ساپورت می کنه اون تعداد که خواستم رو نمایش دادم و اگر نیاز شد ، بعدش هم می نویسم اگر طول کاراکتر متن از اونی که مشخص کردم بیشتر بود ، یک لینک بسازه و در اون لینک کل متن رو نمایش بده. فکر کنم این ساده ترین و پر کاربرد ترین راهش باشه
غایب
  پاسخ
تشکر شده توسط :
#9
(۱۳۹۰ اردیبهشت ۱۸, ۰۳:۲۰ ب.ظ)cyletech نوشته: من خودم اول اومدم کل کاراکتر اون متن رو در آوردم و بعد با mb_substr که کاراکتر فارسی هم ساپورت می کنه اون تعداد که خواستم رو نمایش دادم و اگر نیاز شد ، بعدش هم می نویسم اگر طول کاراکتر متن از اونی که مشخص کردم بیشتر بود ، یک لینک بسازه و در اون لینک کل متن رو نمایش بده. فکر کنم این ساده ترین و پر کاربرد ترین راهش باشه

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

اگه این مساله از نظر شما مشکلی نداره ،‌ آره میتونید از همون substr یا mb_substr استفاده کنید .
  پاسخ
تشکر شده توسط : cyletech sajjilove
#10
صحبت سر سرعت اجرایی بود...
ولی در مورد این مشکل که :
نقل قول:اگه بر اساس کاراکتر بخوایید نمایش بدید ممکنه طولی که برای نمایش کاراکترها مشخص کردید بیوفته وسط آخرین کلمه و کلمه آخر رو نصفه نشون میده مثل همون مثالی که بالا زدم .
حق با شماست Wink
The difference between stupidity and genius is that genius has its limits. - Albert Einstein

"SUCCESS IS NOT A DESTINATION , IT'S A JOURNEY"
غایب
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان