在php中打印特殊字符

时间:2011-02-09 08:24:32

标签: php

我有一个php变量,其中包含来自IO流的数据(例如,我刚读过的文件)。该字符串包含许多特殊字符,例如\ n和\ t等。我需要能够将所有这些字符打印到屏幕上,以便我可以直观地检查字符串。我假设有一些逃避它们的方法,但对于我的生活,我无法弄清楚如何。

3 个答案:

答案 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;
}