Я чувствую, что ответ «это невозможно», но я думал, что попрошу удовлетворить свое любопытство.
У меня есть код, который повторяется там, где \ n неизбежно:
echo "Hello \n"; echo "World!";
Я бы хотел, чтобы строка просто читалась (в выводе кода):
Привет мир!
… таким образом, удаляя \ n.
Поэтому мне было интересно, можно ли исполнить символ «backspace» во время выхода PHP?
Что-то простое, как str_replace( "\n", 'backspace-character', $str );
Да, символ обратного пробела – это код 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 и находится внутри двойных кавычек.