ugrás a tartalomhoz

string hoszza probléma

whiteman0524 · 2009. Okt. 14. (Sze), 15.59
üdv !

Szövegmezőkből olvasok be adatokat egy weblapon, és feldolgozás előtt ellenőrzöm őket, hogy megfelelő hosszúságúak-e ? Ezt az srtlen() függvénnyel csinálom. Az a problémám, hogy például a szövegmezőben megadott 13 karakter, az a php strlen() függvénye szerint 15 karakter ! Szóval valamit nem értek. Az a maradék két karakter a \r\n lenne ? De szövegmezőnél hogy ? Mikor nem is lehet "újsor" -t bevinni mint például a textarea-nál.

Szóval elég idegesítő a probléma, mert írtam egy kis egyszerű JavaScriptet hogy ha például a szövegmező value.length értéke 15 fölé megy akkor legyen piros a háttér. De sajnos a php már 13 karakterre is 15 öt-érzékel ! De nem is lehetne ott láthatatlan karakter mivel a JavaScript jól érzékeli a dolgokat. De a php nem.

A segítséget előre is köszönöm.
 
1

addcslashes

a.d.a.m · 2009. Okt. 14. (Sze), 16.13
Szerintem, irasd ki a mező tartalmát és jelenítsd meg a speciális karaktereket is.
2

Még valami

whiteman0524 · 2009. Okt. 14. (Sze), 16.16
Van itt még egy érdekes dolog...

A JavaScript szerint - és egyébként helyesen - a "Ez itt egy példa" már 16 hosszú ezért bepirosodik a háttere. Ha egyet visszatörlök akkor a "Ez itt egy péld" még éppen elfogadható, vagyis a JavaScript szerint 15 karakter hosszú. De ez a PHP strlen() szerint már 16 karakter !!!! könyörgöm...nah erre varrjon valaki gombot...Ez miez ???
3

php kódot

zyron · 2009. Okt. 14. (Sze), 16.31
mert nekem nem szokott ilyen problémám lenni, amikor szövegmezőből olvasok be szöveget és a hosszúságát vizsgálom...
4

multibyte

gphilip · 2009. Okt. 14. (Sze), 16.49
Hali!

Az strlen függvény a PHP esetén nem veszi figyelembe az esetlegesen több bájton tárolt karaktereket (az utf-8 igen gazdag ilyen karakterekben). Éppen ezért nem is használható igazán szöveghossz megállapÍtására (inkább byte-hosszt számolni jó).

Használd a mb_strlen függvényt helyette, ami a többájtos karaktereket egynek számolja, ha megfelelően adod át a karakterkódolást (vagy előtte beálltod az internal character set-et).
5

Köszi

whiteman0524 · 2009. Okt. 14. (Sze), 17.52
Megoldódott a probléma :) Ez volt a baj...az mb_strlen-el mosmá jó