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

    اگر محتوای $ در ابتدا نسبت به $ maxchars خفیف تر باشد ، کدی که نوشته شده است همچنان به سمت راست برای چپ قرار دارد و حرف آخر را می برد. شما می توانید یک فاصله را در انتهای $ $ ادغام کنید ، یا اگر (strlen ()) انجام دهید

  5. 5

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

    عملکرد showexcerpt ($ محتوا ، $ maxchars) {

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

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

    اگر ($ pos> 0) {
    $ content = substr ($ content، 0، $ pos)؛
    }

    بازگرداندن محتوای $. "" ؛

    } دیگری {

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

    }

    }

  6. 6

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

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

  7. 7

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

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