PHP: strrpos аркылуу сөздү бөлүп алыңыз

HTML коду

Эгер сиз PHP менен иштеп жаткан болсоңуз, анда баштапкы текстиңизден үзүндү көрсөтүп, аны бир нече белгиден бөлүп алгыңыз келсе, анда үзүндү орто сап менен бүткөн болсо, жаман көрүнүшү мүмкүн. Бул үчүн ASPде жана ASP.NETте функцияны жазышым керек болчу, негизинен акыркы орунду таап, акыркы орунду таап, ошол жерден кесип салам. Жагымсыз жана бир аз ашыкча. Чындыгында, бул менин үйүмдө байкалып турат бет бул жерде мен биринчи 500 белгини гана берем.

Мен бүгүн PHP менен бирдей функцияны иштеп чыгууга толук даяр болдум, бирок PHPде буга чейин эле иштей турган функцияны таптым (кадимкидей), strrpos.

Эски код биринчи символдон сиз каалаган белгилердин эң көп санына ($ maxchars) чейин субстринди ($ content) алат:

$ 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 ошол позиция болуп калат. Эми мен жөн гана $ pos> 0 деп сурап, мазмунунда бош орун бар экендигин камсыз кылам. Эгер андай болбосо, анда мен сураган белгилердин саны боюнча мазмунду өчүрүп салат. Эгерде кандайдыр бир орун бар болсо, анда ал менин мазмунун мейкиндикке бөлүп берет.

Бул символдордун максималдуу санынын айкалышын колдонуунун жана аны сөз боюнча кесүүнүн жакшы жолу. Сизге жагат деп үмүттөнөм!

Ошондой эле ASP.NET функциясын аткаргандыгын аныктай турганыма ишенем ... Мен аны таба алган жокмун.

7 Comments

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

    Эгер башында $ content $ maxcharsдан КЫСКА болсо, анда код жазылгандай эле боштук үчүн оңдон солго карап, акыркы сөздү кесип таштайт. $ Мазмунунун аягындагы орунду бириктирип, же 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);
    }

    return $ content. "...";

    башка} {

    $ Мазмунду кайтарып берет;

    }

    }

  6. 6

    Эгер биздин акыркы каарман пунктуация, леп белгиси же суроо белгиси сыяктуу тыныш белгилери болсочу? Тилекке каршы, бул код айтылган пунктуациялык белгиден мурунку сөздүн бардыгын өчүрөт.  

    Менин оюмча бир аз бекемирээк нерсе жазсаңыз жакшы болмок.

  7. 7

Эмне деп ойлойсуң?

Бул сайт спам азайтуу Akismet колдонот. Сиздин комментарий маалымат кандайча иштелишин Үйрөнүү.