2014-01-21 4 views
5

Wie kann ich englische Wörter Interleaved mit persischen Worten übereinstimmen und ersetzen?So ersetzen Sie englische Wörter interleaved mit nicht-Englisch (UTF-8) Wörter

Das persische Alphabet ist nicht lateinisch. Das Problem ist, dass englische Wörter, die mit persischen Wörtern verschachtelt sind (die in Right to Left geschrieben sind), nicht korrekt angezeigt werden, wenn sie nicht mit einem span umgeben sind, der die Links-Rechts-Richtung einstellt.

Daher muss ich englische Wörter durch eine <span dir="ltr">word</span> ersetzen.

Ich denke, das folgende könnte lateinische Wörter zusammenbringen. Es sollte auch einige Symbole enthalten (, !, $, ...). Außerdem geben Sie bitte den Ausdruck für das Ersetzen

^[a-zA-Z]+([a-zA-Z]+)*$ 

ein Beispiel zu geben, wird dieser Text:

من قصد دارم این English# را عوض کنم به 

Sollte ersetzt werden durch:

من قصد دارم این <span dir="ltr">English#</span> را عوض کنم به 

Antwort

8

Dies löst das Problem:

$pattern = "/([a-zA-Z]+[a-zA-Z?><;,{}[\]\[email protected]#$%\^*|']*)/"; 
$replacement = '<span dir="ltr">${1}</span>'; 
$subject = preg_replace($pattern, $replacement, $subject); 

Es entspricht dem englischen Alphabet plus einigen zusätzlichen Zeichen, aber beachten Sie, dass & in den zusätzlichen Zeichen nicht enthalten sein sollte, da die HTML-Codierung der Unicode-Zeichen mit & beginnt.

Verwandte Themen