Quelle est la bonne façon en PHP pour traiter avec des chaînes de décodage, comme ceux-ci:décodeur pour chaîne échappée backslash-
Test1 \\ Test2 \n Test3 \\n Test4 \abc
La sortie désirée est:
Test \ Test2 (linebreak) Test3 \n Test4 abc
Une chose que j'ai essayé était:
str_replace(array('\\\\','\\n','\\'), array('\\',"\n",''), $str);
Mais cela ne fonctionne pas, car il courra le remplacement deux fois, ce qui provoque:
\\n
Pour être décodé comme un saut de ligne quand même.
Je pensais quelque chose comme ceci:
$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;
}
Cela semble fonctionner, mais je me demandais s'il y a peut-être un qui construit en fait exactement cela et j'échapperaient complètement, ou mieux/plus manière compacte complètement pour le faire.
Cela pourrait être un candidat pour assez proche :) Je ne sais pas si j'ai besoin de la syntaxe \ a de toute façon. – Evert