HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>В этом уроке мы разберем, что такое строки, зачем для них нужны одинарные и двойные кавычки. Также узнаем, что такое экранирующие последовательности и конкатенация.</p>
1 <p>В этом уроке мы разберем, что такое строки, зачем для них нужны одинарные и двойные кавычки. Также узнаем, что такое экранирующие последовательности и конкатенация.</p>
2 <h2>Что такое строка</h2>
2 <h2>Что такое строка</h2>
3 <p>Какие из этих пяти вариантов - строки?</p>
3 <p>Какие из этих пяти вариантов - строки?</p>
4 <p>Какие из этих пяти вариантов - строки? С первыми двумя все понятно: это точно строки, мы уже работали с подобными конструкциями. А что насчет остальных?</p>
4 <p>Какие из этих пяти вариантов - строки? С первыми двумя все понятно: это точно строки, мы уже работали с подобными конструкциями. А что насчет остальных?</p>
5 <p>Любой одиночный символ в кавычках - это<strong>строка</strong>, например 'G'. Пустая строка '' - это тоже строка. То есть строкой мы считаем все, что находится внутри кавычек, даже если это пробел, один символ или вообще отсутствие символов.</p>
5 <p>Любой одиночный символ в кавычках - это<strong>строка</strong>, например 'G'. Пустая строка '' - это тоже строка. То есть строкой мы считаем все, что находится внутри кавычек, даже если это пробел, один символ или вообще отсутствие символов.</p>
6 <p>Ранее в уроках мы записывали строки в одинарных кавычках, но можно использовать и двойные:</p>
6 <p>Ранее в уроках мы записывали строки в одинарных кавычках, но можно использовать и двойные:</p>
7 <p>Разберем, почему у обозначения строки есть два способа.</p>
7 <p>Разберем, почему у обозначения строки есть два способа.</p>
8 <h2>Зачем нужны двойные кавычки</h2>
8 <h2>Зачем нужны двойные кавычки</h2>
9 <p>Представим, что нам нужно напечатать строчку dragon's mother. Апостроф перед буквой<strong>s</strong>- это такой же символ, как одинарная кавычка. Попробуем:</p>
9 <p>Представим, что нам нужно напечатать строчку dragon's mother. Апостроф перед буквой<strong>s</strong>- это такой же символ, как одинарная кавычка. Попробуем:</p>
10 <p>Такая программа не будет работать. С точки зрения PHP строчка началась с одинарной кавычки, а потом закончилась после буквы<strong>n</strong>. Дальше были символы s mother без кавычек - значит, это не строка. А потом была одна открывающая строку кавычка, которая так и не закрылась: ');. Этот код синтаксически некорректен.</p>
10 <p>Такая программа не будет работать. С точки зрения PHP строчка началась с одинарной кавычки, а потом закончилась после буквы<strong>n</strong>. Дальше были символы s mother без кавычек - значит, это не строка. А потом была одна открывающая строку кавычка, которая так и не закрылась: ');. Этот код синтаксически некорректен.</p>
11 <p>Здесь помогут двойные кавычки. Такой вариант программы отработает корректно:</p>
11 <p>Здесь помогут двойные кавычки. Такой вариант программы отработает корректно:</p>
12 <p>Теперь интерпретатор знает, что строка началась с двойной кавычки, значит, завершиться должна на двойной кавычке. А одинарная кавычка внутри стала частью строки.</p>
12 <p>Теперь интерпретатор знает, что строка началась с двойной кавычки, значит, завершиться должна на двойной кавычке. А одинарная кавычка внутри стала частью строки.</p>
13 <p>Верно и обратное. Если внутри строки мы хотим использовать двойные кавычки, то саму строку надо оформлять в одинарных. Причем количество кавычек внутри самой строки неважно.</p>
13 <p>Верно и обратное. Если внутри строки мы хотим использовать двойные кавычки, то саму строку надо оформлять в одинарных. Причем количество кавычек внутри самой строки неважно.</p>
14 <p>Теперь представим, что мы хотим создать такую строку:</p>
14 <p>Теперь представим, что мы хотим создать такую строку:</p>
15 <p>В ней есть и одинарные, и двойные кавычки. В этой ситуации нужно указать интерпретатору, что нужно считать каждую кавычку частью строки, а не началом или концом.</p>
15 <p>В ней есть и одинарные, и двойные кавычки. В этой ситуации нужно указать интерпретатору, что нужно считать каждую кавычку частью строки, а не началом или концом.</p>
16 <p>Для этого<strong>экранируют</strong>специальные символы. В нашем случае это символ, который является признаком конца и начала строки, - либо одинарная кавычка, либо двойная, в зависимости от ситуации. Для экранирования используется обратный слеш \.</p>
16 <p>Для этого<strong>экранируют</strong>специальные символы. В нашем случае это символ, который является признаком конца и начала строки, - либо одинарная кавычка, либо двойная, в зависимости от ситуации. Для экранирования используется обратный слеш \.</p>
17 <p>Нам нужно было добавить \ для двойных кавычек, но не для апострофа, потому что сама строка создана с двойными кавычками. Если бы строка создавалась с одинарными кавычками, то символ экранирования нужен был бы перед апострофом, но не перед двойными кавычками.</p>
17 <p>Нам нужно было добавить \ для двойных кавычек, но не для апострофа, потому что сама строка создана с двойными кавычками. Если бы строка создавалась с одинарными кавычками, то символ экранирования нужен был бы перед апострофом, но не перед двойными кавычками.</p>
18 <p>Также нам может понадобиться вывести сам обратный слэш:</p>
18 <p>Также нам может понадобиться вывести сам обратный слэш:</p>
19 <p>Это тоже можно сделать через экранирование, но уже самого себя.</p>
19 <p>Это тоже можно сделать через экранирование, но уже самого себя.</p>
20 <h2>Что такое экранирующие последовательности</h2>
20 <h2>Что такое экранирующие последовательности</h2>
21 <p>Иногда нам необходимо расположить несколько строк друг за другом. Для этого нужно сказать интерпретатору "нажать на Enter" - сделать перевод строки после вопросительного знака. Это можно сделать с помощью символа перевода строки - \n:</p>
21 <p>Иногда нам необходимо расположить несколько строк друг за другом. Для этого нужно сказать интерпретатору "нажать на Enter" - сделать перевод строки после вопросительного знака. Это можно сделать с помощью символа перевода строки - \n:</p>
22 <p>Результат:</p>
22 <p>Результат:</p>
23 <p>\n - это специальный символ. В литературе его часто обозначают как<em>LF</em>(Line Feed). С точки зрения компьютера - это один невидимый символ перевода строки:</p>
23 <p>\n - это специальный символ. В литературе его часто обозначают как<em>LF</em>(Line Feed). С точки зрения компьютера - это один невидимый символ перевода строки:</p>
24 <p>\n - это способ записать символ перевода строки, но сам перевод строки - это один невидимый символ. Так как количество знаков на клавиатуре ограничено и отдано под самые важные, то все специальные символы реализуются в виде таких обозначений.</p>
24 <p>\n - это способ записать символ перевода строки, но сам перевод строки - это один невидимый символ. Так как количество знаков на клавиатуре ограничено и отдано под самые важные, то все специальные символы реализуются в виде таких обозначений.</p>
25 <p>Символ перевода строки не является специфичным для программирования. Во многих редакторах есть опция, которая позволяет включить отображение невидимых символов. С ее помощью можно понять, где они находятся. Хотя это всего лишь схематичное отображение, у этих символов нет графического представления, они невидимые.</p>
25 <p>Символ перевода строки не является специфичным для программирования. Во многих редакторах есть опция, которая позволяет включить отображение невидимых символов. С ее помощью можно понять, где они находятся. Хотя это всего лишь схематичное отображение, у этих символов нет графического представления, они невидимые.</p>
26 <p>\n - это пример<strong>экранирующей последовательности</strong>(escape sequence). Их еще называют управляющими конструкциями. Таких символов не один десяток, но в программировании часто встречаются всего несколько. Программистам часто нужно использовать перевод строки \n для правильного форматирования текста.</p>
26 <p>\n - это пример<strong>экранирующей последовательности</strong>(escape sequence). Их еще называют управляющими конструкциями. Таких символов не один десяток, но в программировании часто встречаются всего несколько. Программистам часто нужно использовать перевод строки \n для правильного форматирования текста.</p>
27 <p>Экранирующие последовательности вроде \n работают<strong>только внутри двойных кавычек</strong>.</p>
27 <p>Экранирующие последовательности вроде \n работают<strong>только внутри двойных кавычек</strong>.</p>
28 <p>Если нам понадобится вывести \n именно как текст, то можно воспользоваться уже известным нам способом экранирования - добавить еще один \ в начале. В итоге последовательность \\n отобразится как символы \ и n, которые идут друг за другом.</p>
28 <p>Если нам понадобится вывести \n именно как текст, то можно воспользоваться уже известным нам способом экранирования - добавить еще один \ в начале. В итоге последовательность \\n отобразится как символы \ и n, которые идут друг за другом.</p>
29 <p>В Windows для перевода строк по умолчанию используется \r\n. Такая комбинация хорошо работает только в Windows, но создает проблемы при переносе в другие системы. Например, когда в команде разработчиков есть пользователи как Windows, так и Linux.</p>
29 <p>В Windows для перевода строк по умолчанию используется \r\n. Такая комбинация хорошо работает только в Windows, но создает проблемы при переносе в другие системы. Например, когда в команде разработчиков есть пользователи как Windows, так и Linux.</p>
30 <p>Последовательность \r\n имеет разную трактовку в зависимости от выбранной кодировки. Это мы рассмотрим позже. По этой причине в среде разработчиков принято всегда использовать \n без \r, так как LF всегда трактуется одинаково и отлично работает в любой системе. Поэтому нужно настроить свой редактор на использование \n.</p>
30 <p>Последовательность \r\n имеет разную трактовку в зависимости от выбранной кодировки. Это мы рассмотрим позже. По этой причине в среде разработчиков принято всегда использовать \n без \r, так как LF всегда трактуется одинаково и отлично работает в любой системе. Поэтому нужно настроить свой редактор на использование \n.</p>
31 <h2>Что такое конкатенация</h2>
31 <h2>Что такое конкатенация</h2>
32 <p>В веб-разработке программы постоянно оперируют строками. Все, что мы видим на сайтах, так или иначе представлено в виде текста. Этот текст чаще всего динамический - полученный из разных частей, которые соединяются вместе. Операция соединения строк в программировании называется<strong>конкатенацией</strong>.</p>
32 <p>В веб-разработке программы постоянно оперируют строками. Все, что мы видим на сайтах, так или иначе представлено в виде текста. Этот текст чаще всего динамический - полученный из разных частей, которые соединяются вместе. Операция соединения строк в программировании называется<strong>конкатенацией</strong>.</p>
33 <p>Мы уже знаем о математической операции сложения:</p>
33 <p>Мы уже знаем о математической операции сложения:</p>
34 <p>Такая программа выведет на экран 8 - результат работы бинарного оператора + с операндами 5 и 3.</p>
34 <p>Такая программа выведет на экран 8 - результат работы бинарного оператора + с операндами 5 и 3.</p>
35 <p>Можно также "сложить" две строки. Такая программа выведет на экран Dragonstone - результат работы бинарного оператора . с операндами 'Dragon' и 'stone':</p>
35 <p>Можно также "сложить" две строки. Такая программа выведет на экран Dragonstone - результат работы бинарного оператора . с операндами 'Dragon' и 'stone':</p>
36 <p>Склеивание строк всегда происходит в том же порядке, в котором записаны операнды. Левый операнд становится левой частью строки, а правый - правой. Вот еще несколько примеров:</p>
36 <p>Склеивание строк всегда происходит в том же порядке, в котором записаны операнды. Левый операнд становится левой частью строки, а правый - правой. Вот еще несколько примеров:</p>
37 <p>Строки можно склеивать, даже если они записаны с разными кавычками.</p>
37 <p>Строки можно склеивать, даже если они записаны с разными кавычками.</p>
38 <p>Пробел - такой же символ, как и другие, поэтому сколько пробелов поставить в строке - столько и получится в итоговой строке:</p>
38 <p>Пробел - такой же символ, как и другие, поэтому сколько пробелов поставить в строке - столько и получится в итоговой строке:</p>
39 <h2>Выводы</h2>
39 <h2>Выводы</h2>
40 <p>В этом уроке мы разобрали, что такое строки - это любой одиночный символ в кавычках. Кавычки могут быть одинарными и двойными. Выбор количества кавычек зависит от того, какие кавычки могут использоваться внутри строки.</p>
40 <p>В этом уроке мы разобрали, что такое строки - это любой одиночный символ в кавычках. Кавычки могут быть одинарными и двойными. Выбор количества кавычек зависит от того, какие кавычки могут использоваться внутри строки.</p>
41 <p>Если в строке есть и одинарные, и двойные кавычки, нужно указать интерпретатору, что нужно считать каждую кавычку частью строки, а не началом или концом. Для этого экранируют специальные символы.</p>
41 <p>Если в строке есть и одинарные, и двойные кавычки, нужно указать интерпретатору, что нужно считать каждую кавычку частью строки, а не началом или концом. Для этого экранируют специальные символы.</p>
42 <p>Если нужно сделать перевод строки, то для этого используется символ \n, который является примером экранирующей последовательности. Экранирующие последовательности работают только внутри двойных кавычек.</p>
42 <p>Если нужно сделать перевод строки, то для этого используется символ \n, который является примером экранирующей последовательности. Экранирующие последовательности работают только внутри двойных кавычек.</p>
43 <p>Также мы узнали, что в коде можно не только складывать цифры, но и строки. Операция соединения строк в программировании называется конкатенацией.</p>
43 <p>Также мы узнали, что в коде можно не только складывать цифры, но и строки. Операция соединения строк в программировании называется конкатенацией.</p>