ugrás a tartalomhoz

Hogyan lehet megszámolni a mysql ból lekérdezett szöveg karakter hosszúságát?

partyface · 2007. Dec. 9. (V), 07.18
Hogyan lehet megszámolni a mysql ból lekérdezett szöveg karakter hosszúságát?

Azaz megszámolni, hogy a lekérdezett szöveg hány karakter hosszú.
 
1

strlen

janoszen · 2007. Dec. 9. (V), 10.12
strlen függvény. Vigyázz vele, mert multibyte safe, tehát ha UTF-8-ban vannak tárolva az adatok, ez nem fog megegyezni a bináris hosszával.
2

Verziofuggo?

Ronyn · 2007. Dec. 10. (H), 12.13
Nekem épp ellenkezo tapasztalatom van,vagyis a bináris hosszt nézi,tehát egy utf-8 szerinti "é" betüre két karaktert ir ki...?
3

strlen vs mb_strlen

gex · 2007. Dec. 10. (H), 13.59
a multibyte safe függvények általában mb_-vel kezdődnek, azaz strlen() helyett használj mb_strlen()-t. persze csak ha az é betűt egy karakternek akarod venni.
4

miért ne az SQL-ben?

TeeCee · 2007. Dec. 10. (H), 14.25
Mivel ugye nem tudjuk, hogy mire használja, lehet, hogy van jobb megoldás is ;-)
Ha az SQL-lel gyártja a kiírandó szöveget, és abban szerepelnie kell a szöveg hosszának is, akkor logikailag az SQL-ben a helye ennek is. Tehát: CHAR_LENGTH().
SELECT CHAR_LENGTH(mezoneve) FROM tabla
(először beírtam a hülyeséget a LENGTH()-el ide, de szerencsére még tudtam módosítni :D Az azt mondja meg, hány karakteren van tárolva, a CHAR_LENGTH() figyelembe veszi a multibyte-os karaktereket és azokat egynek számolja!
MySQL manual - LENGTH() függvénynél )

Mégegyszer hangsúlyozom: _HA_ a PHP _CSAK kiírja_ az SQL-től kapott stringet, akkor nem érdemes a PHP-ban trükközni. (Célszerű egy helyen: vagy az SQL, vagy a PHP, így ha módosítani kell, akkor 1 helyen és nem 2 /vagy rosszabb tervezés esetén még több/. Pláne, ha a PHP-hez nincs telepítve a mbstring kiterjesztés és nem is tud valaki tenni ilyet hozzá, az 5-ös MySQL az UTF8-at jól kezeli...)

Csak hogy egy másik alternatívát is megvillantsak ;-)

Üdv: TeeCee :o)