PHP: strrpos көмегімен сөзден үзінді алып тастаңыз

HTML коды

Егер сіз PHP-мен жұмыс жасасаңыз және тек бастапқы мәтіннің үзіндісін көрсетіп, оны бірнеше таңбамен қиып алғыңыз келсе, үзінді орта жолда жасалған болса, ұсқынсыз болып көрінуі мүмкін. Мұны істеу үшін ASP-де және ASP.NET-те функцияны жазуым керек еді, ол негізінен соңғы таңбадан циклге өтіп, соңғы кеңістікті тауып, оны сол жерде кесіп тастады. Жағымсыз және шамадан тыс артық. Сіз мұны іс жүзінде менің үйімде көре аласыз бет онда мен тек алғашқы 500 таңбаны ұсынамын.

Мен бүгін PHP-мен бірдей функцияны әзірлеуге дайын болдым, бірақ PHP-дің қазірдің өзінде істейтін функциясы бар екенін анықтадым (әдеттегідей), strrpos.

Ескі код бірінші символдан бастап сізге қажетті таңбалардың максималды санына ($ maxchars) дейінгі жолды ($ мазмұн) алады:

$ content = substr ($ мазмұн, 0, $ maxchars); echo $ мазмұны;

Жаңа код:

$ content = substr ($ мазмұн, 0, $ maxchars); $ pos = strrpos ($ мазмұн, «»); if ($ 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 ($ мазмұн, 0, $ maxchars);
    $ pos = strrpos ($ мазмұн, «»);

    егер ($ pos> 0) {
    $ content = substr ($ мазмұн, 0, $ pos);
    }

    $ мазмұнын қайтару. «...»;

    } Тағы {

    $ мазмұнды қайтару;

    }

    }

  6. 6

    Егер біздің соңғы кейіпкеріміз нүкте, леп белгісі немесе сұрақ белгісі сияқты тыныс белгілері болса ше? Өкінішке орай, бұл код аталған тыныс белгілерінің алдындағы барлық сөздерді өшіреді.  

    Менің ойымша, сіз әлдеқайда сенімді нәрсе жазғаныңыз дұрыс болар еді.

  7. 7

Сен не ойлайсың?

Бұл сайт спамның төмендеуі үшін Akismet пайдаланады. Деректеріңіздің қалай өңделетінін біліңіз.