Andreas Korthaus: Frage zu base64

Beitrag lesen

Hallo!

Ich weiss zwar nicht, wie du auf 100% kommst, aber mir ist klar, dass du mit base64 weniger Arbeit hast ;)

vielleicht nicht 100, aber mindestens 95% der Zeichen des Binärstrings müssen url-kodiert werden, bei base64 nur gut 3%!

Aber was würdet Ihr sagen ist schneller(PHP):

$string = preg_replace("///","%2F",$string);
$string = preg_replace("/+/","%2B",$string);

$string = urlencode($string);

Hm... Dem Gefühl nach letzteres, aber diese Angabe ist wie immer ohne Gewähr :-)
Ne, wenn ich das Programmieren müsste, würde ich beim letzteren eine For-Schleife machen, wo ich einfach alle nicht url-konformen Zeichen durch den entsprechenden Eintrag aus der "Codierungs-Tabelle" ersetze und in den output-stream kopiere. Ersteres wird wohl die RegExp-Engine anwerfen und ich glaube nicht, dass diese so performant wäre, wie eine For-Schlaufe. Aber eben: Ich weiss a) nicht, wie urlencode intern programmiert ist und b) gleiches gilt für die regExp-Engine.
Sicherheit kriegst du wohl erst über einen Benchmark.

Ja, werde das mal testen. Muß denn die RegExp-Engine für jede RegExp in einem Script extra gestartet werden, oder wird die nur einmal gestartet?

Mein Gedanke war nur, das urlencode auf zig Zeichen aufpassen muß, und der eigene reguläre Ausdruck nur auf 2. Ich könnte mir auch abenteuerlieche Konstrukte ohen regulären Ausdruck vorstellen, nur meine ich immer, das die in PHP implementierten Funktionen vielleicht in C geschreiben sind und erheblich schneller arbeiten können?! Aber so wirklich weiß ich das alles auch nicht, daher ja auch die Frage, würde mich wirklich mal interessieren wie das im Allgemeinen aussieht, was man wann am besten verwendet!

Viele Grüße
Andreas