PHP: متن خود را با استفاده از strrpos قطع کنید

کد html

اگر با PHP کار می کنید و می خواهید فقط گزیده ای از متن مبدأ خود را نشان دهید و آن را در تعدادی از کاراکترها قطع کنید ، اگر این کار از میان رشته انجام شود ، متن شما زشت به نظر می رسد. من مجبور شدم برای انجام این کار در ASP و ASP.NET یک تابع بنویسم که اساساً از آخرین کاراکتر به چرخش در می آید تا آخرین فضای را پیدا کند و آنجا را قطع کند. نوع تند و زننده و کمی بیش از حد. در واقع می توانید این کار را در خانه من مشاهده کنید با ما جایی که من فقط 500 حرف اول را ارائه می دهم.

من کاملاً آماده بودم که همین عملکرد را امروز با PHP توسعه دهم ، اما (طبق معمول) PHP عملکردی داشت که قبلاً آن را انجام می داد ، strrpos.

کد قدیمی یک زیر رشته ($ محتوا) از نویسه اول به حداکثر تعداد نویسه های مورد نظر شما ($ maxchars) می برد:

$ content = substr ($ content، 0، $ maxchars)؛ echo $ content؛

کد جدید:

$ content = substr ($ content، 0، $ maxchars)؛ $ pos = strrpos ($ content، "")؛ if ($ pos> 0) {$ content = substr ($ content، 0، $ pos)؛ } echo $ content؛

بنابراین کد جدید ابتدا محتوا را در حد کاراکتر مورد نظر شما قطع می کند. با این حال ، گام بعدی جستجوی آخرین فضای ("") در محتوا است. $ pos با این موقعیت پایان می یابد. اکنون ، با س askingال اینکه آیا pos $ 0 است ، من به راحتی اطمینان می دهم که در محتوا فضایی وجود دارد. در صورت عدم وجود ، محتوای موجود در تعداد نویسه هایی که درخواست کرده ام قطع می شود. اگر فضایی وجود داشته باشد ، با کمال لطف محتوای من را در فضا قطع می کند.

این یک روش خوب برای استفاده از ترکیب حداکثر تعداد نویسه ها و قطع آن در کلمه است. امیدوارم خوشت بیاد!

و من مطمئن هستم که آیا یک تابع ASP.NET وجود دارد که این کار را انجام می دهد ... من یکی از آنها را پیدا نکردم.

7 نظرات

  1. 1
  2. 2
  3. 3
  4. 4

    اگر $content در ابتدا کوتاه‌تر از $maxchars باشد، کد نوشته شده همچنان برای یک فاصله از راست به چپ نگاه می‌کند و کلمه آخر را قطع می‌کند. می‌توانید یک فاصله را در انتهای $content به هم بچسبانید، یا یک if انجام دهید (strlen()…)

  5. 5

    به نظر می‌رسد که این به عنوان یک تابع عمل می‌کند (در مورد نظر قبلی):

    تابع showexcerpt ($content، $maxchars) {

    if (strlen($content) > $maxchars) {

    $content= substr($content, 0, $maxchars);
    $pos = strrpos($content، " ");

    if ($pos>0) {
    $content = substr($content, 0, $pos);
    }

    محتوای $ را برگردانید. «…»؛

    } دیگری {

    بازگشت به $ محتوای

    }

    }

  6. 6

    اگر کاراکتر نهایی ما یک کاراکتر نقطه گذاری مانند یک نقطه، علامت تعجب یا علامت سوال باشد چه؟ متأسفانه، این کد کل کلمه قبل از علامت گذاری مزبور را پاک می کند.  

    فکر می کنم بهتر است چیزی کمی قوی تر بنویسی.

  7. 7

شما چه فکر میکنید؟

این سایت از Akismet برای کاهش هرزنامه استفاده می کند. بدانید که چگونه نظر شما پردازش می شود.