Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]rozmiar stringa
Forum PHP.pl > Forum > Przedszkole
right6
jak mam jakiegos stringa postaci "@#$%", to kazdy znak zajmuje 1bajt questionmark.gif a razem beda zajmowac 4 bajty questionmark.gif

czyli aby policzyc rozmiar stringa, trza przeliczyc ilosc znakow ?
Aztech
poczytaj o sizeof() oraz o lenght() i wykorzystaj razem smile.gif
dr_bonzo
strlen() podaje ilosc bajtow (i tez ilosc znakow ASCII, takze dla kodowan 'polskich': iso i win1250)

mb_strlen() dlugosc stringa (dla znakow wielobajtowych: UTF'y, dla normalnych tez)
right6
no dobra, dlugosc stringa zwraca, ale nie rozmiar ...
mike
A co nie wiesz jak pomnożyć dwie liczby?

Skoro masz długość i znasz kodowanie to wystarczy pomnożyć ilość znaków przez ilość bajtów które zajmuje jeden znak w danym kodowaniu i gotowe.

P.S.
Zmień temat wątku, ten jest niepoprawny. Brakuje mu odpowiedniego prefiksu.
right6
no ale ...

to bym chcial zapisac do bazy.
Nieiwedziale mze to sie bedzie zmieniac zaleznie od kodowania.
chodzi mi tylko o znaki ~!@#$%^&*()_+{}|:"<>?

przeciez w bazie beda zawsze zapisane tak smo, wiec tyle samo beda zajmowac nie questionmark.gif (trza by mi znac ich wielkosc w bazie, a nie pow wyswietleniu.)
NuLL
To moze sprawdzisz sobie ile w danej stronie kodowej zajmuje dany znak ?
right6
http://club.pep.ne.jp/~hiroette/en/facemarks/index.html

i tam po prawej sa japonskie emotki, a pod nimi jest napisane ile tam zajmuja ...

no i wlasnie, chce tez wyswietlic jakis znak i pod nim taki podpis. Tylko skad wziasc rozmiar questionmark.gif przeciez kazdy to sobie moze w dowolnym kodowaniu wsywietlic ?
dr_bonzo
Co do tej strony z emotami:
sa tam podzielone na dwie kategorie
- 1 byte: czyli stworzone z uzyciem znakow ASCII (alfabet angielski, znaki ktore znajdziesz na std. klawiaturze QWERTY)

- 2 byte: czyli te z uzyciem 2 bajtowych znakow Unicode, bo tych ich 'krzakow' nie znajdziesz na klawiaturze (takiej jak nasze)


Mozesz to zrobic za pomoca mb_strlen() -- kodowania dziela sie na Unikodowe (UTF=y) i pozostale (iso-****, cp ***...). Te pierwsze sa wielobatowe (1-4B) a te drugie tylko 1B -- mb_strlen() to rozpozna.
right6
no i wlasnie o to mi chodzi o te kombinacje znakow z naszych klawiatur.

no ale znowu mb_strlen() nie zwraca mi rozmiaru ... tylko z tego co wyczytalem dl. jak wiec przemnozyc ta dlugosc ?
dr_bonzo
Sorry -- pomylka -- dlugosc bajtowa policzysz zwyklym str_len'em().

chociaz mb_strlenem tez (po zastosowaniu malego tricka)
http://pl.php.net/manual/en/function.mb-strlen.php :
Cytat
If you wish to find the byte length of a multi-byte string when you are using mbstring.func_overload 2 and UTF-8 strings, then you can use the following:

mb_strlen($utf8_string, 'latin1');
right6
czyli to co mi zwroci zwykly str_len() to bedzie szukana przezemnie dl. w bajtach ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.