PHP: Vágja le a kivonatot a szóból strrpos használatával

html kód

Ha PHP-vel dolgozol, és csak egy kivonatot akarsz megjeleníteni a forrásszövegből, és azt több karakterrel el akarod vágni, akkor a kivonata csúnyának tűnhet, ha karakterlánc közepén áll. Írnom kellett egy függvényt ehhez az ASP-ben és az ASP.NET-ben, amely alapvetően az utolsó karaktertől visszalépve kereste meg az utolsó helyet és ott vágta le. Kicsit csúnya és kissé túlzott. Ezt tulajdonképpen az otthonomban is láthatja oldal ahol csak az első 500 karaktert adom meg.

Teljesen felkészültem arra, hogy ma ugyanezt a funkciót fejlesszem a PHP-vel, de azt tapasztaltam (mint általában), hogy a PHP-nek van olyan funkciója, amely már meg is csinálja, strrpos.

A régi kód az első karaktertől a kívánt karakterek maximális számáig ($ maxchars) vesz részt ($ content):

$ content = substr ($ content, 0, $ maxchars); echo $ tartalom;

Az új kód:

$ content = substr ($ content, 0, $ maxchars); $ pos = strrpos ($ content, ""); if ($ pos> 0) {$ content = substr ($ content, 0, $ pos); } echo $ tartalom;

Tehát az új kód először a keresett karakterkorlátnál vágja le a tartalmat. A következő lépés azonban a tartalom utolsó helyének („“) megkeresése. A $ pos véget ér ebben a pozícióban. Most egyszerűen biztosítom, hogy van-e szóköz a tartalomban, azzal a kérdéssel, hogy $ pos> 0. Ha nincs, akkor csak annyit vág le a tartalomból, amennyi karaktert kértem. Ha van hely, az kecsesen elvágja a tartalmaimat a térnél.

Ez egy jó módszer arra, hogy a maximális karakterek számát kombináljuk, és elvágjuk a szónál. Remélem tetszik!

És biztos vagyok benne, hogy megtudom, van-e olyan ASP.NET funkció, amely ezt megcsinálja ... Nem találtam ilyet.

7 Comments

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

    Ha a $ content eredetileg RÖVIDEBB, mint a $ maxchars, akkor az írott kód továbbra is jobbról balra néz egy szóköz számára, és kivágja az utolsó szót. Vagy összefűzhet egy szóközt a $ content végén, vagy megtehet egy if (strlen ()…)

  5. 5

    Úgy tűnt, hogy ez funkcióként működik (az előző megjegyzéssel foglalkozva):

    function showexcerpt ($ content, $ maxchars) {

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

    $ content = substr ($ content, 0, $ maxchars);
    $ pos = strrpos ($ content, "");

    if ($ pos> 0) {
    $ content = substr ($ content, 0, $ pos);
    }

    vissza $ tartalmat. "…";

    } Else {

    $ tartalom visszaadása;

    }

    }

  6. 6

    Mi van, ha a végső karakterünk olyan írásjel, mint egy pont, felkiáltójel vagy kérdőjel? Sajnos ez a kód kitörli az írásjel előtti teljes szót.  

    Szerintem jobb, ha valami kicsit robusztusabbat írsz.

  7. 7

Mit gondolsz?

Ez az oldal Akismet-et használ a levélszemét csökkentése érdekében. Ismerje meg, hogyan dolgozik a megjegyzésed.