PHP. Հատվածդ կտրիր strrpos- ի միջոցով

html ծածկագիր

Եթե ​​դուք աշխատում եք PHP- ի հետ, և ցանկանում եք ցույց տալ միայն ձեր աղբյուրի տեքստից մի հատված և կտրել այն մի շարք նիշերի վրա, ապա ձեր հատվածը կարող է տգեղ թվալ, եթե այն արված է տողի միջից: Ես պետք է ֆունկցիա գրեի դա անելու համար ASP- ում և ASP.NET- ում, որը հիմնականում շրջվեց վերջին նիշից հետ `գտնելու վերջին տարածությունը և կտրելու այնտեղ: Մի տեսակ տհաճ ու մի քիչ գերակշռություն: Դուք իրականում դա կարող եք տեսնել գործողության մեջ իմ տան վրա էջ որտեղ ես տրամադրում եմ միայն առաջին 500 նիշերը:

Ես լիովին պատրաստ էի PHP- ի հետ նույն ֆունկցիան զարգացնելու համար, բայց գտա (ինչպես միշտ), որ PHP- ն ուներ մի ֆունկցիա, որը դա արդեն անում է, ստրպոս.

Հին ծածկագիրը տողը ($ բովանդակություն) կտանի առաջին նիշից մինչև ձեր ուզած նիշերի առավելագույն քանակը ($ մաքսատուներ).

$ content = substr ($ բովանդակություն, 0, $ մաքսիմեր); echo $ բովանդակություն;

Նոր ծածկագիրը.

$ content = substr ($ բովանդակություն, 0, $ մաքսիմեր); $ pos = strrpos ($ պարունակություն, ""); եթե ($ pos> 0) {$ content = substr ($ բովանդակություն, 0, $ pos); } echo $ բովանդակություն;

Այսպիսով, նոր ծածկագիրը նախ կտրում է բովանդակությունը ձեր փնտրած նիշերի սահմանում: Այնուամենայնիվ, հաջորդ քայլը բովանդակության մեջ վերջին տարածության որոնումն է (””): $ pos- ը վերջանում է այդ դիրքում: Հիմա ես պարզապես համոզվում եմ, որ բովանդակության մեջ իրականում կա տարածք ՝ հարցնելով, թե արդյոք $ pos> 0: Եթե ​​չկա, դա պարզապես կկտրի բովանդակությունը իմ պահանջած նիշերի քանակից: Եթե ​​կա որևէ տեղ, դա նրբագեղորեն կկտրի իմ բովանդակությունը տարածության վրա:

Սա նիշերի առավելագույն քանակի համադրությունը օգտագործելու և բառի վրա կտրելու լավ միջոց է: Հուսով եմ ձեզ դուր կգա

Եվ ես համոզված եմ, որ կպարզեմ արդյոք կա ASP.NET ֆունկցիա, որը դա անում է… Չկարողացա գտնել:

7 Comments

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

    Եթե ​​$ բովանդակությունն ի սկզբանե ավելի նեղ է, քան $ maxchars- ը, ապա գրված ծածկագիրը դեռևս աջից ձախ է նայելու համար և կտրում է վերջին բառը: Դուք կարող եք կամ միացնել տարածությունը $ բովանդակության վերջում, կամ կատարել if (strlen ())

  5. 5

    Սա կարծես աշխատում էր որպես ֆունկցիա (անդրադառնալով նախորդ մեկնաբանությանը).

    function showexcerpt ($ պարունակություն, $ maxchars) {

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

    $ content = substr ($ բովանդակություն, 0, $ մաքսիմեր);
    $ pos = strrpos ($ պարունակություն, "");

    եթե ($ pos> 0) {
    $ բովանդակություն = substr ($ բովանդակություն, 0, $ pos);
    }

    վերադարձնել $ պարունակությունը: «»;

    } {Else

    return $ content;

    }

    }

  6. 6

    Ի՞նչ կլինի, եթե մեր վերջնական կերպարը կետադրական բնույթ է, ինչպես վերջակետ, բացականչություն կամ հարցական նշան: Unfortunatelyավոք, այս ծածկագիրը կսրբի ամբողջ կետը, որը նախորդում է նշված կետադրության նիշին:  

    Կարծում եմ ՝ ավելի լավ կլինի մի քիչ ավելի ուժեղ բան գրեք:

  7. 7

Ինչ եք կարծում?

Այս կայքը օգտագործում է Akismet- ը սպամի նվազեցման համար: Իմացեք, թե ինչպես է ձեր տվյալները մշակվում.