mb_str_replace()... ist langsam. alternativen?
Möchte ich sicherstellen, dass einige string-Ersetzung ' s bei mir läuft, sind multi-byte-sicher. Ich habe einige gefunden mb_str_replace Funktionen um die net, aber Sie sind langsam. Ich spreche von 20% zu erhöhen, nach der übergabe vielleicht 500-900 bytes durch.
Irgendwelche Empfehlungen? Ich denke über die Verwendung von preg_replace, wie es die einheimischen und zusammengestellt, so könnte es schneller sein. Irgendwelche Gedanken würde geschätzt.
Sie müssen geben Sie mehr info. Was ist die Ersatz-Zeichenfolge und die Kodierung des Subjekts? Wenn das Thema UTF-8 und die Ersatz-Zeichenfolge im ASCII-Bereich, die Sie verwenden können
Unicode hat schon was, 15 Jahren? Immer noch mucken mit mb strings in einem core-innere Schleife? Arbeiten von innen nach außen.
str_replace
.Unicode hat schon was, 15 Jahren? Immer noch mucken mit mb strings in einem core-innere Schleife? Arbeiten von innen nach außen.
InformationsquelleAutor onassar | 2010-08-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie gesagt es, str_replace ist sicher für die Verwendung in utf-8 zusammenhängen, solange alle Parameter sind utf-8 gültig, da es keine mehrdeutigen match zwischen den beiden multibyte-kodierten strings. Wenn Sie überprüfen die Gültigkeit Ihrer Eingabe, dann haben Sie keine Notwendigkeit, sich für eine andere Funktion.
str_replace
funktionieren würde nur wenn Sie normalisieren die beiden Ihren Streicher ersten.Guter Tipp, jedenfalls mein Verständnis von "multibyte-sicher" ist "Sie nicht geben falsche positive, während matching", was in der Praxis bedeutet, dass Sie nicht beschädigt die Ausgabe von Informationen in Bezug auf das, was es ist gewünscht für den Ersatz.
überprüfen Sie den angegebenen link
danke!!!
InformationsquelleAutor Áxel Costas Pena
Als Kodierung ist eine echte Herausforderung, wenn es Eingaben von überall (utf8 oder andere), ich ziehe mit nur multibyte-safe-Funktionen. Für
str_replace
ich bin mit diese eine, die ist schnell genug.InformationsquelleAutor Alain Tiemblo
Hier ist meine Umsetzung, basierend auf Alains Antwort:
Seiner nicht annimmt, eine Zeichen-Kodierung, obwohl ich denke, man könnte es über
mb_regex_encoding
.Meine unit-tests pass:
InformationsquelleAutor mpen
Top rated Hinweis auf http://php.net/manual/en/ref.mbstring.php#109937 sagt
str_replace
Werke für multibyte-strings.InformationsquelleAutor Shaunak Sontakke