PHP: strrpos ашиглан үгээ хасах

HTML код

Хэрэв та PHP-тэй ажиллаж байгаа бол зөвхөн эх текстийнхээ хэсгийг үзүүлж хэд хэдэн тэмдэгтээр таслахыг хүсч байгаа бол таны ишлэл дунд мөрөнд хийгдсэн бол муухай харагдаж болно. Үүнийг хийх функцийг би ASP болон ASP.NET дээр бичих ёстой байсан бөгөөд үндсэндээ сүүлчийн тэмдэгтээс мөчлөгөөр сүүлчийн орон зайг олж, тэнд таслав. Муухай, жаахан хэтрүүлэлт. Та үүнийг бодит байдал дээр миний гэрт бодитоор харж болно Page би зөвхөн эхний 500 тэмдэгтийг өгдөг.

Би өнөөдөр PHP-тэй ижил функцийг хөгжүүлэхэд бэлэн байсан боловч PHP нь үүнийг аль хэдийн хийдэг функцтэй болохыг (ердийн байдлаар) олж мэдсэн, strrpos.

Хуучин код нь эхний тэмдэгтээс таны хүссэн тэмдэгтүүдийн хамгийн их тоонд ($ maxchars) дэд мөрийг ($ content) авах болно.

$ content = substr ($ content, 0, $ maxchars); echo $ агуулга;

Шинэ код:

$ content = substr ($ content, 0, $ maxchars); $ pos = strrpos ($ агуулга, ""); хэрэв ($ pos> 0) {$ content = substr ($ content, 0, $ pos); } echo $ агуулга;

Тиймээс шинэ код нь эхлээд хайж буй тэмдэгтийн хязгаар дахь агуулгыг хасах болно. Гэсэн хэдий ч дараагийн алхам бол агуулгаас хамгийн сүүлийн орон зайг (”“) хайх явдал юм. $ pos нь ийм байрлал байх болно. Одоо би агуулга дотор үнэхээр зай байгаа эсэхийг $ pos> 0 эсэхийг асуугаарай. Хэрэв байхгүй бол энэ нь миний хүссэн тэмдэгтүүдийн тоогоор агуулгыг хасах болно. Хэрэв ямар нэг зай байгаа бол энэ нь миний агуулгыг орон зайд тансаг байдлаар хасах болно.

Энэ бол хамгийн их тооны тэмдэгтүүдийн хослолыг ашиглах, үгнээс нь хасах сайхан арга юм. Танд таалагдана гэж найдаж байна!

Үүнийг хийдэг ASP.NET функц байгаа эсэхийг олж мэдэх болно гэдэгт би итгэлтэй байна ... Би үүнийг олж чадсангүй.

7 санал

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

    Хэрэв $ агуулга нь эхлээд $ maxchars-ээс БУГААР байвал кодыг бичсэнээр нь баруун зүүн тийш харж, сүүлчийн үгийг нь хасах болно. Та $ агуулгын төгсгөлд хоосон зайг нэгтгэх эсвэл if (strlen ()…) хийж болно.

  5. 5

    Энэ нь функц болж ажиллах шиг санагдсан (өмнөх сэтгэгдлийг шийдвэрлэх):

    showexcerpt функц ($ агуулга, $ maxchars) {

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

    $ content = substr ($ content, 0, $ maxchars);
    $ pos = strrpos ($ агуулга, "");

    хэрэв ($ pos> 0) {
    $ content = substr ($ content, 0, $ pos);
    }

    $ агуулгыг буцаах. "...";

    } else {

    $ агуулгыг буцаах;

    }

    }

  6. 6

    Хэрэв бидний төгсгөлийн дүр бол цэг таслал, тэмдэглэгээ, асуултын тэмдэг гэх мэт тэмдэгт байвал яах вэ? Харамсалтай нь, энэ код нь тухайн таслал тэмдэгтийн өмнөх үгийг бүхэлд нь арчина.  

    Та арай илүү бат бөх зүйл бичсэн нь дээр байх гэж бодож байна.

  7. 7

Чи юу гэж бодож байна?

Энэ сайт нь спамыг багасгахын тулд Akismet-ийг ашигладаг. Таны өгөгдлийг хэрхэн боловсруулдаг талаар суралц.