Tersbölü öncelemeli dize için Decoder

0 Cevap php

Bu gibi dizeleri çözümlenmesi ile başa çıkmak için PHP doğru yolu nedir:

Test1 \\ Test2 \n Test3 \\n Test4 \abc

İstenilen çıktı:

Test \ Test2 (linebreak) Test3 \n Test4 abc

Ben denedim bir şey oldu:

str_replace(array('\\\\','\\n','\\'), array('\\',"\n",''), $str);

Ama bu neden olur, iki kez yerine çalışacak, çünkü çalışmıyor:

\\n

Zaten bir satır açmaya olarak deşifre edilecek.

Yani böyle bir şey düşünüyordum:

$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;

}

Bu iş gibi görünüyor, ama tam olarak bunu yapar ve ben tamamen cevapsız bir yerleşik, ya da bunu yapmak için tamamen bir iyi / daha kompakt bir yolu belki vardır diye merak ediyordum.

0 Cevap