PHP: Адрэжце вытрымку ад слова, выкарыстоўваючы strrpos

HTML-код

Калі вы працуеце з PHP і хочаце паказаць толькі ўрывак з зыходнага тэксту і адрэзаць яго на шэраг знакаў, ваш урывак можа выглядаць непрыгожа, калі гэта будзе зроблена ў сярэдзіне радка. Мне трэба было напісаць функцыю, каб зрабіць гэта ў ASP і ў ASP.NET, якая ў асноўным перавярнулася з апошняга сімвала назад, каб знайсці апошняе месца і адрэзаць яго там. Выгляд непрыемны і крыху залішні. Вы сапраўды можаце пераканацца ў гэтым у маім доме старонка дзе я ўводжу толькі першыя 500 знакаў.

Я быў цалкам гатовы распрацаваць тую ж функцыю з PHP сёння, але выявіў (як звычайна), што ў PHP ужо ёсць такая функцыя, strrpos.

Стары код зойме падрадок ($ змест) ад першага знака да максімальнай колькасці знакаў, якую вы хочаце ($ maxchars):

$ content = substr ($ content, 0, $ maxchars); рэха $ змест;

Новы код:

$ content = substr ($ content, 0, $ maxchars); $ pos = strrpos ($ змест, ""); if ($ pos> 0) {$ content = substr ($ content, 0, $ pos); } рэха $ змест;

Такім чынам, новы код спачатку адразае змест з абмежаваным знакам, які вы шукаеце. Аднак наступны крок - пошук апошняга прабелу ("") у змесце. $ 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);
    }

    вярнуць $ змест. "...";

    } Яшчэ {

    вярнуць $ ўтрыманне;

    }

    }

  6. 6

    Што рабіць, калі наш канчатковы знак - гэта знакі прыпынку, такія як кропка, клічнік ці пытальнік? На жаль, гэты код знішчыць усё слова, якое папярэднічае згаданаму знаку прыпынку.  

    Я думаю, вам было б лепш напісаць нешта крыху больш надзейнае.

  7. 7

Што вы думаеце?

Гэты сайт выкарыстоўвае Akismet для барацьбы са спамам. Даведайцеся, як дадзеныя апрацоўваюцца каментар.