我有一个php变量,其中包含来自IO流的数据(例如,我刚读过的文件)。该字符串包含许多特殊字符,例如\ n和\ t等。我需要能够将所有这些字符打印到屏幕上,以便我可以直观地检查字符串。我假设有一些逃避它们的方法,但对于我的生活,我无法弄清楚如何。
答案 0 :(得分:2)
addcslashes("test\n", "\0..\37\177..\377")
答案 1 :(得分:0)
很有趣的问题。我无法在Google中找到有关转义换行符的任何内容。
我想您可以尝试使用nl2br,它会将您的换行转换为<br />
,但这并不是很有用,因为您不知道何时有实际的中断标记或换行符。
所以,为了解决这个问题,我建议你选择两个选项。如果您只想检查字符串,请使用var_dump()或var_export()
以下代码给出了输出'text \\n'
:
$var = 'text \n';
var_export($var);
或者,如果你想进一步使用它,你可以使用这样的代码,但说实话,这是非常混乱...
$var = 'text \n';
$search = array('\n', '\r', '\r\n');
$replace = array('[n]', '[r]', '[r][n]');
echo str_replace($search, $replace, $var);
这会输出text [n]
答案 2 :(得分:0)
我认为这是一个非常古老的问题,但没有一个答案非常有用。我们使用这个函数来检查这样的字符串,所以希望它可以帮助其他人:
function convert_non_visual_ascii_chars_to_representation($string) {
$non_vis_chars = [
0 => 'NUL',
1 => 'SOH',
2 => 'STX',
3 => 'ETX',
4 => 'EOT',
5 => 'ENQ',
6 => 'ACK',
7 => 'BEL',
8 => 'BS',
9 => 'TAB',
10 => 'LF',
11 => 'VT',
12 => 'FF',
13 => 'CR',
14 => 'SO',
15 => 'SI',
16 => 'DLE',
17 => 'DC1',
18 => 'DC2',
19 => 'DC3',
20 => 'DC4',
21 => 'NAK',
22 => 'SYN',
23 => 'ETB',
24 => 'CAN',
25 => 'EM',
26 => 'SUB',
27 => 'ESC',
28 => 'FS',
29 => 'GS',
30 => 'RS',
31 => 'US',
];
// Convert the string
$new_string = '';
$length = strlen($string);
for ($i = 0; $i < $length; $i++) {
$char_code = ord($string[$i]);
if (isset($non_vis_chars[$char_code])) {
$new_string = $new_string . '[' . $non_vis_chars[$char_code] . '/' . $char_code . ']';
} else {
$new_string = $new_string . $string[$i];
}
}
return $new_string;
}