输出中的PHP“退格”字符可能吗?

时间:2009-09-17 16:46:16

标签: php

我有一种感觉,答案是“这是不可能的”,但我想要满足我的好奇心。

我有一些代码在\ n不可避免的地方回应:

echo "Hello \n";
echo "World!";

我想简单地读一行(在代码输出中):

  

Hello World!

...因此删除\ n。

所以我想知道在PHP输出期间是否可以执行“退格”字符?

str_replace( "\n", 'backspace-character', $str );

这样简单的事情

8 个答案:

答案 0 :(得分:30)

是的,退格符是ASCII字符代码8(根据ASCII table),因此您可以使用chr()在php中输出它。例如:

echo 'ab' . chr(8);

将输出“a”

答案 1 :(得分:6)

如果输出目标是HTML,则额外的空格无关紧要 - 浏览器不会渲染多个连续的空格(这就是为什么我们有 

如果输出目标是其他东西,那么您可以简单地清理输出。从其他回复中可以看出,有很多方法可以做到这一点。看起来你正在使用echo语句,所以output-buffering函数将是你想要的路径。

ob_start();

echo "Hello \n";
echo "World!";

$output = preg_replace( "/ +/", ' ', str_replace( "\n", ' ', ob_get_clean() ) );

echo $output;

答案 2 :(得分:3)

如果您希望能够使用输出缓冲区执行任何操作:

ob_start();

echo "Hello\n World";

$out = ob_get_contents();

ob_end_clear();
echo str_replace('\n', '', $out);

您甚至可以使用httaccess将包含此脚本的脚本附加到任何名为。

的脚本中

但是,你不能在设置为stdout之前处理它吗?像

function print2($str){
    echo str_replace("\n", '', $str);
}

答案 3 :(得分:2)

这不是他确切问题的直接答案,而是标题似乎暗示的内容:输出 PHP“退格”字符,这可能仅在使用PHP CLI时才有用。

您可以在ASCII table上为此(和其他字符)找到正确的ASCII代码,然后使用chr()或转义序列:

echo chr(8);
echo "\010";

答案 4 :(得分:1)

如何用空格替换“\n”(如果传入的字符串中只有一个空格,则只是没有)

像这样,例如:

$str = "Hello\nWorld!";
var_dump($str);

$str = str_replace("\n", ' ', $str);
var_dump($str);

第一个输出给出:

string 'Hello
World!' (length=12)

第二个:

string 'HelloWorld!' (length=11)

这还不够吗?
(或者我可能不太了解这个问题)

答案 5 :(得分:1)

你不能这样做:

$str = str_replace("\n", ' ', $str);
while (strpos($str, '  ') !== false) // while there's two spaces in a row
  $str = str_replace('  ', ' ', $str);

现在$str会将每个空格或\n个字符序列替换为仅一个空格。 (因为如果你只是删除\ n你的migth有一个空格缺失的地方,如果你只是用空格替换它,你会有一些地方连续多个空格)。

编辑:我不知道循环是否真的有必要,但我没有任何东西要测试,如果str_replace会自动完成这个技巧(我不认为使用正则表达式这么简单事情真是个好主意。)

答案 6 :(得分:0)

我建议不要考虑如何做一个退格字符,而是重新考虑问题。为什么要收回一些输出?可能是因为你太早输出了它。

不是对中间值进行回显,而是将它们附加到缓冲区。然后编辑缓冲区。然后打印出来。如果您无法控制是否生成输出(例如,您正在使用输出内容的外部供应商的库),请使用PHP输出缓冲。

答案 7 :(得分:-4)

我不知道怎么做退格,但如果你只想尝试换行,我会用:

echo "<br>";

PHP代码允许使用html代码,只要它在print或echo语句中使用,并且在双引号内。