我有一种感觉,答案是“这是不可能的”,但我想要满足我的好奇心。
我有一些代码在\ n不可避免的地方回应:
echo "Hello \n";
echo "World!";
我想简单地读一行(在代码输出中):
Hello World!
...因此删除\ n。
所以我想知道在PHP输出期间是否可以执行“退格”字符?
像str_replace( "\n", 'backspace-character', $str );
答案 0 :(得分:30)
答案 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语句中使用,并且在双引号内。