Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Closed TopicStart new topic
> [PHP]Jak obliczać długość tekstu z polskimi znakami ?, mb_strlen zle dziala, zawyza wartosci
Octobus
post
Post #1





Grupa: Zarejestrowani
Postów: 259
Pomógł: 1
Dołączył: 3.07.2011

Ostrzeżenie: (0%)
-----


Witam. Mam taki problem bo potrzebuje policzyć długość tekstu z pl znakami. Przykładowy tekst:
Kod
Mając do czynienia z systemem Windows Vista



dlugosc tekstu: 43
strlen daje: 44
mb_strlen daje: 44

z tego co czytalem w manualu mb_strlen powinien liczyc znaki a nie bity wiec to ą zawyza wartosc.
(IMG:style_emoticons/default/sciana.gif)

Edit: Ok przepraszam za kłopot, nie doczytalem
mb_strlen($string,'UTF-8')
Go to the top of the page
+Quote Post
jacusek
post
Post #2





Grupa: Zarejestrowani
Postów: 262
Pomógł: 3
Dołączył: 18.10.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


ewentualnie w ten sposób, ale na to samo wychodzi
  1. (strlen(utf8_decode($zmienna)
Go to the top of the page
+Quote Post
darko
post
Post #3





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Bardzo nieeleganckie rozwiązanie, ale zadziała:
  1. function strlen_pl($txt)
  2. {
  3. $pls = array('ą', 'ć', 'ę', 'ł', 'ń', 'ó', 'ś', 'ź', 'ż', 'Ą', 'Ć', 'Ę', 'Ł', 'Ń', 'Ó', 'Ś', 'Ź', 'Ż');
  4. $substractPl = 0;
  5. foreach($pls as $pl)
  6. {
  7. $substractPl += substr_count($txt, $pl);
  8. }
  9. return strlen($txt) - $substractPl;
  10. }
  11. $txt = 'Zażółć gęślą jaźń';
  12. echo strlen_pl($txt);
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Już podał rozwiązanie. Wystarczy.
Go to the top of the page
+Quote Post

Closed TopicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 07:09