Was ist der richtige Weg in PHP mit der Decodierung Strings zu beschäftigen, wie diese:Decoder für Backslash-Escape-Sequenzen
Test1 \\ Test2 \n Test3 \\n Test4 \abc
Die gewünschte Ausgabe ist:
Test \ Test2 (linebreak) Test3 \n Test4 abc
Eine Sache, die ich habe versuchte, war:
str_replace(array('\\\\','\\n','\\'), array('\\',"\n",''), $str);
Aber das funktioniert nicht, weil es das ersetzen zweimal laufen, was bewirkt, dass:
\\n
Entschlüsselt sowieso als Zeilenumbruch.
So dachte ich so etwas wie diese:
$offset = 0;
$str = 'Test1 \\\\ Test2 \\n Test3 \\\\n Test4 \\abc';
while(($pos = strpos($str,'\\', $offset)) !== false) {
$char = $str[$pos+1];
if ($char=="n" || $char=="N") {
// Insert a newline and eat 2 characters
$str = substr($str,0,$pos-1) . "\n" . substr($str,$pos+2);
} else {
// eat slash
$str = substr($str,0,$pos-1) . substr($str,$pos+1);
}
$offset=$pos+1;
}
Dies scheint zu stehen, aber ich frage mich, ob es vielleicht ein eingebauter, das tut genau dies und ich völlig verfehlt es, oder ein bessere/mehr kompakter Weg, um dies zu tun.
Dies könnte ein Anwärter auf nahe genug sein :) Bin mir nicht sicher ob ich die \ a Syntax trotzdem brauche. – Evert