php在包含'\ t','\ 0'等字符的字符串上爆炸

时间:2012-05-06 16:03:35

标签: php

我的代码:

$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­"
}

我想在找到的每个'\'聊天中拆分字符串(并保留所有值) 虽然我希望该功能爆炸并正常工作。 我该如何解决这个问题?

2 个答案:

答案 0 :(得分: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'这样的特殊字符会失去它们的含义并表现为普通的字符串。

答案 1 :(得分: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"
}
相关问题