Может возникнуть символ «backspace» PHP во время выхода?

Я чувствую, что ответ «это невозможно», но я думал, что попрошу удовлетворить свое любопытство.

У меня есть код, который повторяется там, где \ n неизбежно:

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

Я бы хотел, чтобы строка просто читалась (в выводе кода):

Привет мир!

… таким образом, удаляя \ n.

Поэтому мне было интересно, можно ли исполнить символ «backspace» во время выхода PHP?

Что-то простое, как str_replace( "\n", 'backspace-character', $str );

Solutions Collecting From Web of "Может возникнуть символ «backspace» PHP во время выхода?"

Да, символ обратного пробела – это код ASCII-символа 8 (согласно таблице ASCII ), поэтому вы можете выводить его в php с помощью chr () . например:

 echo 'ab' . chr(8); 

выведет "a"

Если целью вывода является HTML, то лишние пробелы не имеют значения – браузеры не отображают несколько смежных пространств (именно поэтому у нас есть   )  

Если целью вывода является что-то другое, вы можете просто очистить выход. Как вы можете видеть из других ответов, существует множество способов сделать это. Похоже, вы работаете с эхо-инструкциями, поэтому функции буферизации вывода будут маршрутом, который вы хотите принять.

 ob_start(); echo "Hello \n"; echo "World!"; $output = preg_replace( "/ +/", ' ', str_replace( "\n", ' ', ob_get_clean() ) ); echo $output; 

Если вы хотите сделать это для чего угодно, вы можете использовать выходной буфер:

 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); } 

Это не прямой ответ на его точный вопрос, а на то, на что похоже похоже название: вывод символа «backspace» PHP , что, вероятно, полезно только при использовании PHP CLI.

Вы можете найти правильный код ASCII для этого (и других символов) в таблице ASCII , а затем использовать либо chr (), либо escape-последовательность:

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

Как просто заменить « \n » на пробел (или просто ничего, если у вас уже есть одно место в вашей входящей строке) ?

Например, например:

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

Первый вывод дает:

 string 'Hello World!' (length=12) 

И второе:

 string 'HelloWorld!' (length=11) 

Этого недостаточно?
(Или, может быть, я не очень хорошо понимаю вопрос)

Вы не можете сделать это так:

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

Теперь $str будет иметь все пробелы или \n последовательности символов, замененные только одним пробелом. (потому что если вы просто удалите \ n, у вас есть место, где пробел отсутствует, и если вы просто замените его пробелом, у вас будут несколько мест с несколькими пробелами в строке).

EDIT: я не знаю, действительно ли цикл необходим, но мне нечего тестировать, если str_replace автоматически выполнит трюк (и я не думаю, что использование регулярного выражения для такой простой вещи действительно хорошая идея) ,

Вместо того, чтобы думать о том, как сделать обратный символ, я бы предложил переосмыслить проблему. Почему вы хотите вернуть часть своего результата? Наверное, потому, что ты дал слишком рано.

Вместо того, чтобы делать эхо на промежуточных значениях, добавьте их в буфер. Затем отредактируйте буфер. Затем распечатайте его. Если вы не можете контролировать, производится ли выход или нет (например, вы используете внешнюю библиотеку поставщика, которая выводит данные), используйте буферизацию вывода PHP.

Я не знаю, как сделать backspace, но если вы просто пытаетесь сделать новую строку, я бы использовал:

 echo "<br>"; 

PHP-код позволяет использовать html-код, если он используется в инструкции print или echo и находится внутри двойных кавычек.