/
Программирование
/
Курс PHP
/

Экранирующие последовательности

PHP: Экранирующие последовательности

Допустим, мы хотим вывести текст ниже в две строчки:

- Are you hungry?
- Aaaarrrgh!

Если мы просто передадим этот текст в print_r(), то PHP напечатает все в одну строчку. Технически можно написать два подряд идущих print_r(), но представим, что мы хотим это сделать с помощью одного:

<?php

print_r("- Are you hungry?- Aaaarrrgh!");
// => - Are you hungry?- Aaaarrrgh!

Чтобы каждая из них начиналась с новой строки, нужно добавить перевод строки, то есть «нажать Enter». В программировании это реализуется через добавление специальных символов, в данном случае \n. Да, это не опечатка. Несмотря на то, что мы видим здесь два символа, с точки зрения PHP это один символ:

<?php

print_r("- Are you hungry?\n- Aaaarrrgh!");

Результат будет таким:

- Are you hungry?
- Aaaarrrgh!

Что такое \n?

\n является управляющей последовательностью (англ. escape sequence, иногда говорят «экранированная последовательность»). Она обозначает перевод строки, но не отображается напрямую. Вы не увидите \n в выводе программы, так как она влияет только на расположение текста.

В текстовых редакторах при нажатии Enter добавляется невидимый символ LF (Line Feed). Именно его и означает \n. Иногда такие символы можно увидеть, если включить отображение спецсимволов:

- Привет!¶
- О, привет!¶
- Как дела?

Принтеры, редакторы и интерпретатор PHP понимают \n как команду начать текст с новой строки.

Важная особенность PHP: управляющие последовательности вроде \n работают только внутри двойных кавычек. В одинарных кавычках \n — это просто два обычных символа, \ и n:

<?php

print_r("Hello\nWorld");
// Hello
// World

print_r('Hello\nWorld');
// => Hello\nWorld

Примеры использования \n

Вот как PHP обрабатывает управляющую последовательность \n:

В коде       "Hello\nWorld"
                   ↓
На экране    Hello
             World

Местоположение \n меняет итоговый вывод:

<?php

print_r("Hello\nWorld");
// Hello
// World

print_r("Hello \nWorld");
// Hello
// World  (в конце первой строки есть пробел)

print_r("Hello\n World");
// Hello
//  World  (во второй строке в начале пробел)

print_r("Hello\n\nWorld");
// Hello
//
// World  (пустая строка между ними)

Пробелы до или после \n также учитываются. PHP воспринимает их как обычные символы и отображает в выводе.

Вы также можете вставлять \n в любую часть строки — до, после или даже использовать отдельно:

<?php

print_r("First line\n");
print_r("\n"); // Просто пустая строчка
print_r("Second line");

Результат будет таким:

First line

Second line

Как вывести сам символ \n

\n в PHP является управляющей последовательностью. Она управляет расположением текста и не выводится на экран как обычные символы. Если вам нужно вывести именно символы \ и n, а не перевод строки, их нужно экранировать. Для этого перед обратным слешем добавляют еще один слеш:

<?php

print_r("Hello\\nWorld");
// => Hello\nWorld

// Если забыть указать второй слеш
print_r("Hello\nWorld");
// Hello
// World

В этом случае PHP понимает \\ как обычный обратный слеш и показывает строку без перевода строки.

Другие управляющие последовательности

Кроме \n, в PHP есть и другие управляющие последовательности:

  • \t обозначает табуляцию (эквивалент клавиши Tab)
  • \r обозначает возврат каретки (используется в Windows, но редко применяется в PHP-коде)
  • В программировании чаще всего используют именно \n, его достаточно для большинства задач

Важные детали

  • \n является одним символом, несмотря на то, что в коде он записан как два (\ и n)
  • Управляющие последовательности в PHP работают только внутри двойных кавычек
  • На Windows по умолчанию используется комбинация \r\n, но в кроссплатформенной разработке принято использовать только \n, чтобы избежать проблем при переносе кода между системами. Поэтому стоит настроить свой редактор на использование \n

Задание

Вы пишете программу, которая показывает пользователю подсказку о том, как разбить текст на строки. Выведите подсказку одним вызовом print_r():

Для разделения строк используйте "\n"
Пример: print_r("строка1\nстрока2")

Обратите внимание: \n в первой строке — это буквальный текст, а не перевод строки.

Полезное

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются