woodfighter: perl regex

Beitrag lesen

Tach,

es gibt bestimmt noch ein dutzend andere Methoden, aber du wolltest ja schnell sein und mir fällt auf die Schnelle nix schnelleres ein. PHP neigt im Gegensatz zu Perl dazu sehr viele sehr spezielle Funktionen anzubieten (in Perl findet man dafür dann vermutlich 5 CPAN-Module, die die Aufgabe erledigen können), was nicht unbedingt immer ein Vorteil ist, spontan aus der Liste der Stringfunktionen: strtr wäre vermutlich in diesem Falle in PHP besser als str_replace;

Du meinst, dass eine Lösung mit strstr performanter als str_replace wäre?

strtr sagte und meinte ich, weil es zum Gegensatz von str_replace nicht auf String- sondern auf Character-Ebene hantiert, würde ich vermuten, dass es effizienter implementiert ist; PHP ist schließlich in C geschrieben und da wäre das halt einfacher. Aber für wichtiger halte ich meine Aussage, dass das Microoptimierung ist, die ohne sehr viele Wiederholungen nicht messbar sein wird.

md5 und md5file (Überladen ist manchmal dann doch ein hilfreiches Konzept);

„Überladen“ würde hier also bedeuten, dass eine fiktive, beides vereinende Funktion md5 anhand der Art des übergebenen Parameters (Datei-Zeiger oder String), bzw. allgemein anhand des Verwendungskontexts entscheidet, was zu tun ist? Habe ich das richtig verstanden?

Ja, in anderen Sprachen kann man Funktionsnamen mehrfach verwenden solange deren Signaturen unterschiedlich sind, in Java könnte eine Klasse zum Beispiel die folgenden Funktionen anbieten

public class Hash{
  public static String md5(String string){};
  public static String md5(File file){};
}

und dann wird beim Kompilieren anhand des übergebenen Objekts entschieden, welche der beiden Funktionen aufgerufen wird; das geht natürlich nur, weil es (zwischen Objekten) keine implizite Typumwandlung gibt (in Java wäre Hash.md5(17) dann aber halt ein Fehler, weil keine Funktion existiert, die ein Integer (oder int) erwartet.

mfg
Woodfighter