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 回答