2

私のコード:

$string="655:47 Text: 0 n\some more text here\t\2\r\3\tl\0\f0\\f1\\f2\\a0\0\a1\0\a2\255";
$a=explode("\\",$string);
var_dump($a);

私が得る出力は次のとおりです。

array(7) {
  [0]=>
  string(33) "655:47 Text: 0 n"
  [1]=>
  stringl20) "some more text
0"
  [2]=>
  string(2) "f1"
  [3]=>
  string(2) "f2"
  [4]=>
  string(3) "a0"
  [5]=>
  string(3) "a1"
  [6]=>
  string(3) "a2­"
}

関数を分解して正しく機能させたいのですが、見つかったすべての'\'チャットで文字列を分割したい(それでもすべての値を保持したい)。どうすればこれを解決できますか?

4

2 に答える 2

3

二重引用符の代わりに一重引用符を使用し、

$string='655:47 Text: 0 n\some more text here\t\2\r\3\tl\0\f0\\f1\\f2\\a0\0\a1\0\a2\255';
$a=explode('\',$string);
var_dump($a);

PHPでは、一重引用符を使用すると、「/ t」などの特殊文字は意味を失い、プレーンな文字列として動作します。

于 2012-05-06T16:11:31.977 に答える
1

正常に動作してます。印刷できない文字がすべて表示されているわけではありません。

メッセージに「\nまたは」のような文字を含めるかどうかは完全には明確ではありませんが、二重引用符( )内で使用すると、特殊文字にエスケープされます。たとえば、実際にはタブ文字を含む文字列であり、改行です。\t""\t"\n

これらの文字が必要ない場合は、これらの二重引用符を一重引用符に変更してください。

$string='655:47 Text: 0 n\some more text here\t\2\r\3\tl\0\f0\\f1\\f2\\a0\0\a1\0\a2\255';

これを行うと、次の出力が得られます。

array(17) {
  [0]=>
  string(16) "655:47 Text: 0 n"
  [1]=>
  string(19) "some more text here"
  [2]=>
  string(1) "t"
  [3]=>
  string(1) "2"
  [4]=>
  string(1) "r"
  [5]=>
  string(1) "3"
  [6]=>
  string(2) "tl"
  [7]=>
  string(1) "0"
  [8]=>
  string(2) "f0"
  [9]=>
  string(2) "f1"
  [10]=>
  string(2) "f2"
  [11]=>
  string(2) "a0"
  [12]=>
  string(1) "0"
  [13]=>
  string(2) "a1"
  [14]=>
  string(1) "0"
  [15]=>
  string(2) "a2"
  [16]=>
  string(3) "255"
}
于 2012-05-06T16:10:36.597 に答える