PHP: eilutės su UFT-8 koduote nukirpimas

ProgramavimasPHP

0 • 5322 •

Programuojant interneto svetaines labai dažnai tenka trumpinti eilutę arba pastraipą, jei norite pateikti kažkokio teksto santrauką. Viskas lyg būtų labai paprasta, nes egzistuoja substr(...) funkcija.

Šiuo atveju gali iškilti keletas problemų:

  • jei tekste yra HTML simbolių, žymių (angl. tags), nukirpti paprastai ties nurodytų simbolių skaičiumi negalima. Jei tokie dalykai mums nesvarbūs ir jų galime atsikratyti, tokiam tikslui tinka funkcija strip_tags(..), kuri panaikina visas html žymes tekste.
  • kita problema - UFT simboliai. Funkcija substr (..), nesusitvarko su UTF-8 koduotės simboliais ir juos nukerta, o tada tekste gausite neaiškius kringelius, kurie jūsų puslapio tikrai nepapuoš. Išeitis funkcija mb_substr(...), kuri puikiai susitvarko su tokiais iššūkiais.

Elementari funkcija teksto nukirpimui atrodytų taip:

function substring ($string, $length)
{
  $string = trim(strip_tags(stripslashes($string)));
  if (strlen($string) <= $length)
    return $string;
  else 
    return mb_substr($string, 0, $length-2,'UTF-8')."..";
}

Sėkmės programuojant :)

Pamoka pateikta

Facebook