2012-04-13 11 views
0

Wie kann ich diese Ersetzungen in einem regulären Ausdruck kombinieren?Mehrere mb_ereg_replace() - Aufrufe kombinieren

Die Ausdrücke funktionieren wie erwartet, aber ich möchte sie zu weniger als drei Replace-Anweisungen kombinieren.
Ich kann nicht einfach das vorhandene direction-Attribut ersetzen, da ich nicht weiß, ob es irgendwelche gibt.

bearbeiten
zusätzlichen Wechsel zu den ersten beiden Auswechslungen:

$style = mb_ereg_replace("(direction:[[:space:]]*(rtl|ltr);)|(^[[:space:]]*)|([[:space:]]*$)", "", $style) . " direction: {$direction};"; // remove existing direction-attribute and trim spaces at the end and beginning and add the new one 
$style = mb_ereg_replace("([[:space:]]){2,}", " ", $style); // limit spaces to one at a time 
+1

Sie können sie einfach als [Alternativen] (http://www.regular-expressions.info/alternation.html) auflisten. – mario

+0

Ich weiß, aber ich frage nach [mb_ereg_replace()] (http://il.php.net/manual/en/function.mb-ereg-replace.php). Wenn Sie mich auf eine bessere Lösung hinweisen können, als mir zu sagen, dass etwas, worüber ich nicht gefragt habe, nicht verwendet werden sollte, würde ich mich freuen, @Truth. – fragmentedreality

+1

@Truth: ['mb_ereg'] (http://php.net/mb_ereg) ist nicht. (Auch veraltet bedeutet nicht, dass es realistisch bald entfernt werden könnte.) – mario

Antwort

1

Dies ist die Art, wie ich es tun würde: trim() ersetzt die zweite regex (wenn Sie die Zeilenumbrüche behalten möchten, wenn es einige sein)

ich habe es mit preg_replace, was sollte man statt ereg_functions verwenden (sein etwas anders, aber nichts Komplex)

$style = trim(preg_replace('~direction:(\\s*?)(rtl|ltr);~','',$style) . " direction: {$direction};"); 
$style = preg_replace('~(\\s*?){2,}~',' ',$style); 
+0

Tut mir leid, das gibt mir: "style =" d i rect i o n: r t l; "' - und das kommt von der zweiten 'preg_replace()'. – fragmentedreality

+0

geben Sie einige Beispielcode pls – Mohammer

+0

'$ direction' ist entweder" rtl "oder" ltr "und" $ style "ist eine abrtrary css-Direktive. Im besten Fall ist es leer, im schlimmsten Fall enthält es Sachen wie 'direction: rtl;' Sie können mit '$ style =" direction: ltr: "; $ direction = "rtl"; '. Das ist alles, was in die Funktion kommt. – fragmentedreality