Ich habe mir etwas Code angeschaut und angefangen, über den effizientesten Weg nachzudenken, eine Zeichenfolge (in diesem Fall einen URI) abzuschneiden, indem ich preg_replace
.
Zunächst einmal ist mir klar, dass die Verwendung von preg_replace
für diese Aufgabe zu viel sein könnte, dass es unnötig teuer sein könnte und dass es besser ist, die String-freundlichen Funktionen von PHP zu verwenden, wie z.B. substr
. Ich weiß dies.
Betrachten Sie nun diese beiden unterschiedlichen regulären Ausdrücke:
$uri = '/one/cool/uri'; // Desired result '/one/cool'
// Using a back-reference
$parent = preg_replace('#(.*)/.*#', "$1", $uri);
// Using character class negation
$parent = preg_replace('#/[^/]+$#', '', $uri);
Standardmäßig würde ich davon ausgehen, dass im ersten Fall die Erstellung des Rückverweises teurer ist als der Verzicht darauf, so dass das zweite Beispiel vorzuziehen wäre. Aber dann begann ich mich zu fragen, ob die Verwendung von [^/]
im 2. Beispiel könnte teurer sein als die entsprechende .
im ersten Beispiel, und wenn ja, wie viel mehr?
Ich bevorzuge das erste Beispiel unter dem Gesichtspunkt der Lesbarkeit, und da wir gerade dabei sind, Haare zu spalten, neige ich dazu, es zwischen den beiden zu wählen (schließlich ist es auch wertvoll, lesbaren Code zu schreiben). Kann aber auch nur meine persönliche Vorliebe sein.
Was denken Sie?