Autor Zpráva
kachnak
Profil
zdravím, mám menší problém s kódovaním a zisťovaním dlžky slov v texte.

táto funkcia mi vráti správnu dĺžku slova:
$dlzka=mb_strlen($buf, 'UTF-8');

predtým keď tam nebolo to UTF-8 tak to vracalo zlú dĺžku pretože znaky á í ... počítalo ako dva znaky... lenže teraz mám problém, že slovo uložené v $buf nemá kódovanie UTF a ked mu cez funkciu poviem že zober prvá dva znaky zo slova a slovo obsahuje á í é... tak to pokazí.. a hodí tam divné znaky...

túto funkciu využívam na zalamovanie dlhých slov (po 50tich znakoch vloží medzeru a pokračuje)

Ako mám previesť slovo $buf tiež do UTF aby znaky (žýáí) zaberali jeden znak a nie dva?
nechápem tomu pretože v databáze sú slová uložené vo formáte utf8_general_ci

Ďakujem

ps: celá funkcia

function textchange($text)
  {
    $buff=explode(" ",$text);
    $pocet=count($buff);
    $a=$pocet;
    $vysledok="";          
    while($a!=-1)
    {
        $buf="$buff[$a]";
        $dlzka=mb_strlen($buf, 'UTF-8'); 
        if($dlzka>0)
        {
              if($dlzka>50)
              {
                  $b=0;
                  $bufy="";
                  while($b!=$dlzka)
                  {
                      if($b%50!=0)
                      $bufy="$bufy$buf[$b]";
                      else
                      $bufy="$bufy $buf[$b]";    
                      $b++;
                  }
                  $buf="$bufy";
              }  
              $vysledok="$buf $vysledok";
         }
         $a--;
    }
    $text="$vysledok";
    return $text;
  }

Moderátor Joker: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
WertriK
Profil
http://diskuse.jakpsatweb.cz/?action=vthread&forum=18&topic=99034

Dole je celá funkce.
Majkl578
Profil
kachnak:
Ako mám previesť slovo $buf tiež do UTF aby znaky (žýáí) zaberali jeden znak a nie dva?
$buf = iconv('vstupní kódování', 'UTF-8', $buf);

nechápem tomu pretože v databáze sú slová uložené vo formáte utf8_general_ci
A i script je psaný v UTF-8?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0