PHP mb_ereg_replace nicht zu ersetzen, während die Funktion preg_replace funktioniert wie vorgesehen
Ich versuche, Sie zu ersetzen in einem string alle nicht-Wort-Zeichen mit einem leeren string erwarten, dass für die Räume und die alle zusammen mehrere Leerzeichen in einem einzigen Raum.
Folgende code tut dies.
$cleanedString = preg_replace('/[^\w]/', ' ', $name);
$cleanedString = preg_replace('/\s+/', ' ', $cleanedString);
Aber wenn ich versuche, mit mb_ereg_replace nichts passiert.
$cleanedString = mb_ereg_replace('/[^\w]/', ' ', $name);
$cleanedString = mb_ereg_replace('/\s+/', ' ', $cleanedString);
$cleanedString ist der gleiche wie der, dass, wenn $name im obigen Fall. Was mache ich falsch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
mb_ereg_replace
verwenden keine Trennzeichen. Sie kann oder kann nicht auch noch das angeben der Kodierung vor.preg_replace
mit deru
Flagge:preg_replace('/\s+/u', ' ', $cleanedString);
preg_replace
verwendet),\w
wird nur bedeuten[a-zA-Z0-9_]
. Wenn Sie ausschließen wollen, dass alle nicht-Wort-Zeichen, eine bessere option ist die Verwendung[^\p{L}\p{Nd}\p{Mn}_]
. Diese passen auf alle Zeichen, die nicht (per Unicode -) Briefe, non-spacing-Mark (für Akzente, etc.), Ziffern und den Unterstrich.\w
bedeutet (Brief|Mark|Zahl|Connector_Punctuation).}
überprüfen Sie bitte, ist es ok und unterstützen Englisch und unicode -
Wird die Eingabe nicht Multi-Byte daher die
mb
Funktion fehlschlägt.