Diese Frage wurde bereits von anderen Mitgliedern gestellt / beantwortet, aber mein Fall ist etwas anders.
Problem: Wie man Wörter in einer Zeichenkette umkehrt? Sie können strpos (), strlen (), substr () verwenden, aber nicht andere sehr nützliche Funktionen wie explode (), strrev () usw.
Dies ist im Grunde eine Interviewfrage, also muss ich die Fähigkeit zeigen, Strings zu manipulieren.
Beispiel:
$ string="Ich bin ein Junge"
Antwort:
"I ma a yob"
Unten ist meine Lösung, die mich 2 Tage dauerte (Seufzer), aber es muss eine elegantere Lösung geben. Mein Code sieht sehr lang aus.
Vielen Dank im Voraus!
Meine Absicht:
%Vor%Code:
%Vor% Hoppla! Miss-lesen Sie die Frage. Hier geht's (Beachten Sie, dass dies auf alle Nicht-Buchstaben-Grenzen und nicht nur auf Leerzeichen aufgeteilt wird. Wenn Sie möchten, dass ein Zeichen nicht geteilt wird, fügen Sie es einfach zu $wordChars
hinzu):
Bearbeiten: Jetzt ist es eine einzelne Funktion und speichert den Puffer naiv in umgekehrter Schreibweise.
Edit2: Behandelt nun UTF8-Zeichen (fügen Sie einfach "word" -Zeichen zur Zeichenfolge $wordChars
hinzu) ...
Ich glaube, der einfachste Weg wäre, Ihre Zeichenkette mit explode () in ein Array einzufügen und dann die Funktion array_reverse () zu verwenden. Natürlich müssen Sie das Array ausgeben. Für weitere Details zu array_reverse () siehe Ссылка
Meine Antwort ist, die Stringlänge zu zählen, die Buchstaben in ein Array aufzuteilen und dann rückwärts zu loopen. Dies ist auch eine gute Möglichkeit zu überprüfen, ob ein Wort ein Palindrom ist. Dies kann nur für normale Zeichenfolgen und Zahlen verwendet werden.
%Vor%preg_split kann auch in explode () geändert werden.
Bearbeiten: Sie haben gefragt, dass jedes Wort umgekehrt werden soll, aber immer noch in der Reihenfolge "Wort". So etwas könnte besser funktionieren:
%Vor%