![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
me pro ok?
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
|
// Edit:
Okay, hat sich gerade eben erledigt. Sachen erledigen sich immer von selbst, wenn ich gerade gepostet hab :> Ich möchte die mir die Größe eines Strings berechnen lassen. Als ersten Lösungsansatz hab ich mir da ausgedacht, zu schauen, wieviele Bytes die einzelnen Zeichen im jeweiligen Zeichensatz haben und das dann zusammenzurechnen. Da gibts dann aber ein Problem. Woran erkenne ich, welcher Zeichensatz denn gerade verwendet wird. Der String wird höchstwahrscheinlich dynamisch kommen, also kann da prinzipiell alles drinstecken. Verwendet PHP UTF-8 als Standard-Zeichensatz?
__________________
Gedanken aus Draht stricken einen Zaun. Geändert von Lars (04.10.2005 um 22:16 Uhr). |
|
|
|
|
|
Nach oben #2 |
|
me pro ok?
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
|
Okay, neues Problem
Ich bin jetzt inzwischen an der Stelle angelangt, an der ich den String zu UTF-8 konvertiere. Aber UTF-8 Zeichen haben eine variable Größe von 1 bis maximal 4 Bytes. Jemand ne Idee, wie ich darauf reagieren könnte?
__________________
Gedanken aus Draht stricken einen Zaun. |
|
|
|
|
|
Nach oben #3 |
|
BIN EIN KRASSA HELD!!!111
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.184
|
alles multibyte funktionen unter anderem mb_strlen denke das ist was du suchst oder? mfg robo47 |
|
|
|
|
|
Nach oben #4 |
|
me pro ok?
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
|
Das hatte ich mir auch schon angeschaut, aber mb_strlen() hat ja nur den Vorteil, dass ein MB-Char wirklich als _ein_ Zeichen gezählt wird. Es kann mir aber nicht sagen, wie viel Byte die einzelnen Zeichen brauchen.
__________________
Gedanken aus Draht stricken einen Zaun. |
|
|
|
|
|
Nach oben #5 |
|
BIN EIN KRASSA HELD!!!111
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.184
|
öhm die bytes währen doch imho
strlen($string) +1, das eine für die info über die länge des strings (soweit sich da ein string in pascal von php unterscheidet, aber mir fällt auch gerade ein, dass in pascal string[0] die länge war und in pascal gings ja auch nur bis 255 zeichen. mfg robo47 |
|
|
|
|
|
Nach oben #6 | |
|
me pro ok?
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
|
Wikipedia sagt z. B. zu UTF-8:
Zitat:
__________________
Gedanken aus Draht stricken einen Zaun. |
|
|
|
|
|
|
Nach oben #7 |
|
BIN EIN KRASSA HELD!!!111
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.184
|
aber ein utf-8-string den du anstatt mit mb_strlen mittels strlen überprüfst, sollte doch dann die anzahl der bytes ausspucken oder ?
zuzügl dem byte für die längenangabe, hast du dann deine größeninfo |
|
|
|
|
|
Nach oben #8 |
|
me pro ok?
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
|
Hau mich, wenn ich falsch liege, aber strlen() gibt doch die Anzahl der Zeichen zurück?
Das ist ja schön und gut, aber da ich nicht weiß, wieviele Byte ein Zeichen genau nimmt, bringt mir das nichts Eine Möglichkeit wäre vielleicht, jedes Zeichen einzeln zu untersuchen. Aber das dürfte bei ganzen HTML-Dokumenten zu lange dauern.
__________________
Gedanken aus Draht stricken einen Zaun. |
|
|
|
|
|
Nach oben #9 |
|
BIN EIN KRASSA HELD!!!111
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.184
|
öhm sofern du irgendeinen string in utf-8 umwandelst, sollte strlen dir die anzahl der bytes ausgeben, ich mein ich bin mir nichtsicher, aber soweit sich mir das ergibt von der logik her sollte es so sein und wenn du mal testweise einen utf-8 string ausgibst ohne passenden header, siehst du ja auch dass mehr "zeichen" daraus werden.
also sollte doch die strlen, dann mehr oder minder die anzahl der bytes sein. mfg robo47 |
|
|
|
|
|
Nach oben #10 |
|
Benutzer
Registriert seit: 18.08.2005
Ort: Düsseldorf
Beiträge: 57
|
@Lars ... schon witzig... du machst hier einen etwas verwirrten Eindruck ^^
Erste Sache: Wie auf die 1-6(!) Byte reagieren? Meine Gedanke: Warum überhaupt reagieren? Zweite Sache: Du willst Bytes haben, keine Zeichen Mein Gedanke: Warum dann überhaupt erst Zeichen zählen mit mb_*? Es gibt doch einen seeehr exakten Grund warum du dir denkst, das strlen() nicht funktioniert beim Zeichen-Zählen. Ebend weil es tatsächlchen nur Bytes zählt ^^ |
|
|
|
|
|
Nach oben #11 |
|
me pro ok?
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
|
Ich bin gerade auch ein wenig verwirrt :>
Ich mb_strlen() gerade mal mit ein paar UTF-8 Zeichen von http://www.columbia.edu/kermit/utf8.html getestet. Code:
¥ · £ · € · $ · ¢ · ₡ · ₢ · ₣ · ₤ · ₥ · ₦ · ₧ · ₨ · ₩ · ₪ · ₫ · ₭ · ₮ · ₯ Jetzt bin ich ein wenig sehr verwirrt. // Edit: strlen() gbt das selbe zurück.
__________________
Gedanken aus Draht stricken einen Zaun. |
|
|
|
|
|
Nach oben #12 |
|
Erfahrener Benutzer
Registriert seit: 18.08.2005
Beiträge: 108
|
PHP-Code:
Geändert von Waq (06.10.2005 um 19:21 Uhr). |
|
|
|
|
|
Nach oben #13 | |
|
Erfahrener Benutzer
Registriert seit: 18.08.2005
Beiträge: 108
|
Zitat:
Als zweites schickt sich aber die Frage an, warum Du die Metadaten da mit reinziehst? Solltest Du dann nicht gleich noch den Speicherverbrauch des Hashtable-Eintrages mitberechnen? |
|
|
|
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Problem bei Verarbeitung von Templates (Eigene Klassen) | dago | PHP-Programmierung | 21 | 31.08.2006 16:02 |
| Symbolklassen festlegen | anna | Allgemeine Java-Programmierung | 2 | 12.11.2005 11:30 |
| Datei einlesen. | cyberdevil87 | Allgemeine Java-Programmierung | 3 | 27.06.2005 09:22 |
| Access Anbindung unter Linux mit Java ? | kampet | Datenbanken | 5 | 25.04.2005 08:43 |
| string in teilbereiche zerteilen!? | Niki_Tesla | Allgemeine Java-Programmierung | 10 | 14.02.2005 09:11 |