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 kivonat csúnyának tűnhet, ha karakterlánc közepén áll. Írnom kellett egy függvényt erre 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 egy kicsit túlzott. Ezt tulajdonképpen az otthonomon 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, amennyit kértem. Ha van hely, az kecsesen elvágja a tartalmamat 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 kezdetben RÖVIDEBB, mint a $maxchars, a leírt kód továbbra is jobbról balra fog kinézni egy szóközhöz, és kivágja az utolsó szót. Összefűzhet egy szóközt a $content végén, vagy megadhat egy if (strlen()…)

  5. 5

    Úgy tűnt, ez funkcióként működik (az előző megjegyzéshez szólva):

    function showexcerpt($content, $maxchars) {

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

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

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

    vissza $content . "…";

    } Else {

    $ tartalom visszaadása;

    }

    }

  6. 6

    Mi van, ha az utolsó karakterünk egy írásjel, például egy pont, felkiáltójel vagy kérdőjel? Sajnos ez a kód törli az írásjelet megelőző teljes szót.  

    Szerintem jobb lenne, ha valami határozottabbat írnál.

  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.