Как увеличить длину строки
Перейти к содержимому

Как увеличить длину строки

  • автор:

Урок №202. Длина и ёмкость std::string

При создании строки не помешало бы указать её длину и ёмкость (или хотя бы знать эти параметры).

Длина std::string

Длина строки — это количество символов, которые она содержит. Есть две идентичные функции для определения длины строки:

size_type string::length() const

size_type string::size() const

Обе эти функции возвращают текущее количество символов, которые содержит строка, исключая нуль-терминатор. Например:

Хотя также можно использовать функцию length() для определения того, содержит ли строка какие-либо символы или нет, эффективнее использовать функцию empty():

bool string::empty() const — эта функция возвращает true , если в строке нет символов, и false — в противном случае.

Есть еще одна функция, связанная с длиной строки, которую вы, вероятно, никогда не будете использовать, но мы все равно её рассмотрим:

size_type string::max_size() const — эта функция возвращает максимальное количество символов, которое может хранить строка. Это значение может варьироваться в зависимости от операционной системы и архитектуры операционной системы.

Ёмкость std::string

Ёмкость строки — это максимальный объем памяти, выделенный строке для хранения содержимого. Это значение измеряется в символах строки, исключая нуль-терминатор. Например, строка с ёмкостью 8 может содержать 8 символов.

size_type string::capacity() const — эта функция возвращает количество символов, которое может хранить строка без дополнительного перераспределения/перевыделения памяти.

Length: 10
Capacity: 15

Примечание: Запускать эту и следующие программы следует в полноценных IDE, а не в веб-компиляторах.

Обратите внимание, ёмкость строки больше её длины! Хотя длина нашей строки равна 10, памяти для неё выделено аж на 15 символов! Почему так?

Здесь важно понимать, что, если пользователь захочет поместить в строку больше символов, чем она может вместить, строка будет перераспределена и, соответственно, ёмкость будет больше. Например, если строка имеет длину и ёмкость равную 10, то добавление новых символов в строку приведет к её перераспределению. Делая ёмкость строки больше её длины, мы предоставляем пользователю некоторое буферное пространство для расширения строки (добавление новых символов).

Но в перераспределении есть также несколько нюансов:

Во-первых, это сравнительно ресурсозатратно. Сначала должна быть выделена новая память. Затем каждый символ строки копируется в новую память. Если строка большая, то тратится много времени. Наконец, старая память должна быть удалена/освобождена. Если вы делаете много перераспределений, то этот процесс может значительно снизить производительность вашей программы.

Во-вторых, всякий раз, когда строка перераспределяется, её содержимое получает новый адрес памяти. Это означает, что все текущие ссылки, указатели и итераторы строки становятся недействительными!

Обратите внимание, не всегда строки создаются с ёмкостью, превышающей её длину. Рассмотрим следующую программу:

Строки в C++

В этой статье мы поговорим о классе string, который включен в стандартную библиотеку языка программирования C++. Одновременно с этим рассмотрим основы работы со строками: изучим конструкторы, арифметические операторы и некоторые методы.

В языке программирования C++ существует специальный класс string, обеспечивающий удобство работы со строковыми данными. Для его применения нет необходимости выполнять хитрые манипуляции — достаточно просто подключить соответствующий заголовочный файл string.

Если вспомнить тот же Си, то там существует заголовочный файл стандартной библиотеки, который называется string.h. Он содержит функции, необходимые для работы с памятью и нуль-терминированными строками. На практике функции, объявленные в string.h, применяются довольно широко, так как являются частью стандартной библиотеки, в результате чего стабильно работают на любых платформах, которые поддерживают язык программирования Си.

Но вернемся к С++. На практике вы можете не просто объявлять строки, но и одновременно с этим присваивать им значения:

В нашем случае S1 будет являться пустой, а S2 — состоять из пяти символов.

Идем дальше. К отдельным символам вы можете обращаться по индексу, как к элементам массива. К примеру, S[0] позволит обратиться к первому строчному элементу (как и в массиве, нумерация начинается с нуля).

Если же надо узнать длину строки length, вы можете воспользоваться методом size(). К примеру, последний символ строки S можно выразить как S[S.size() — 1] .

Конструкторы

При работе со строковыми данными возможно применение ряда конструкторов:

Вызов конструкторов может быть явным, как в примере ниже:

То есть мы осуществили вызов конструктора string в целях создания строчки, которая включает в себя 10 символов ‘z’.

Вызов бывает и неявным, что происходит в процессе объявления, когда указываются дополнительные параметры. Это может выглядеть следующим образом:

Ввод-вывод

Вывод строчных значений осуществляется так же, как и числовых:

Если же надо выполнить считывание, используют операцию «>>» для объекта cin:

Результатом вышеуказанной операции станет считывание строчки из непробельных символов, то есть пробелы и концы строк будут пропущены. Это довольно удобно, если надо разбить текст на слова либо в целях считывания данных до конца файла посредством while (cin >> S) .

Есть возможность выполнять считывание и до появления символа конца строки — тут уже пригодится функция getline. А вот сам символ конца считывается уже из входного потока, правда, непосредственно к строке его добавление не происходит:

Арифметические операторы

Работая со строковыми данными, мы можем выполнять ряд арифметических операций, среди них:

  • = — для присваивания значения;
  • += — для добавления в конец какого-нибудь другого элемента (к примеру, числа) либо даже другой строки;
  • + — оператор конкатенации двух строк/строки и символа;
  • ==, != — для посимвольного сравнения;
  • <, >, <=, >= — для лексикографического сравнения.

Таким образом, мы можем выполнить копирование содержимого одной строки в другую посредством операции S1 = S2 , далее выполнить их сравнение на равенство посредством S1 == S2 , потом сравнить в лексикографическом порядке ( S1 < S2 ) либо или выполнить конкатенацию (сложение) в виде S = S1 + S2 .

Методы

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

size

Возвращает длину строки. Значение, которое таким образом возвращается, имеет беззнаковый тип (как и во всех других случаях, если функция возвращает значение, которое равняется длине строке либо индексу элемента, такие значения являются беззнаковыми). Именно поэтому следует предельно внимательно выполнять вычитание из значения, которое возвращается посредством size(). К примеру, будет ошибкой записать цикл, перебирающий все строчные элементы, кроме последнего, типа for (int i = 0; i < S.size() — 1; ++i) .

Также длину строки можно возвратить с помощью метода length().

resize

S.resize(n) позволит изменить длину строки, причем новая длина станет равняться n. Важно понимать, что длина строки ведь может как увеличиться, так и уменьшится. Вызвав метод в виде S.resize(n, c), когда c — символ, вы получите ситуацию, при которой при увеличении строковой длины добавляемые элементы станут равняться c.

clear

S.clear() очистит строчку, в результате чего она станет пустой.

empty

S.empty() возвратит true, когда строчка будет пустой и false, когда непустой.

push_back

S.push_back(c) добавит в конец символ c. Этот метод вызывается с одним параметром, имеющим тип данных char.

append

Добавит в конец несколько символов, другую строчку либо ее фрагмент. Тут существует множество способов вызова:

  • S.append(n, c)— добавляется n одинаковых элементов, которые равны с. У n здесь целочисленный тип, а у c — char;
  • S.append(T) — добавляется содержимое T-строки. Причем T может быть как С-строчкой, так и объектом класса string;
  • S.append(T, pos, count) — добавляются символы T-строки, начиная с символа, имеющего индекс pos. Добавление происходит в количестве count.

Хотите знать про C++ больше? Получить нужные навыки вы сможете на курсах в Otus.

Строки

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

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

Последовательность Значение
\n новая строка (LF или 0x0A (10) в ASCII)
\r возврат каретки (CR или 0x0D (13) в ASCII)
\t горизонтальная табуляция (HT или 0x09 (9) в ASCII)
\v вертикальная табуляция (VT или 0x0B (11) в ASCII) (с версии PHP 5.2.5)
\e escape-знак (ESC или 0x1B (27) в ASCII) (с версии PHP 5.4.4)
\f подача страницы (FF или 0x0C (12) в ASCII) (с версии PHP 5.2.5)
\\ обратная косая черта
\$ знак доллара
двойная кавычка
\[0-7] последовательность символов, соответствующая регулярному выражению символа в восьмеричной системе счисления
\x[0-9A-Fa-f] последовательность символов, соответствующая регулярному выражению символа в шестнадцатеричной системе счисления

Манипулирование строками

Для работы со строками в PHP существует целый ряд специализированных функций.

Форматирование строк

В PHP есть две функции, позволяющие отформатировать данные перед выводом:

  • printf() — выводит отформатированную строку в окно браузера;
  • sprintf() — выводит отформатированную строку в переменную.
    Далее можно использовать для записи в файл с помощью функции fputs().

Этим функциям передаются строка управления форматом и сами форматируемые данные. Строка управления форматом включает в себя обычные символы, которые прямо копируются в результат, и определители преобразования. Каждый определитель преобразования начинается с символа процента (%) и включает следующие элементы:

  • указатель заполнения используется, если необходимо увеличить размер строки. По умолчанию выполняется заполнение пробелами. Можно указать и 0. Перед любым другим символом заполнения надо поставить одинарную кавычку (). Необязательный параметр;
  • указатель выравнивания, заданный знаком минус (), определяет выравнивание влево. По умолчанию выполняется выравнивание вправо. Необязательный параметр;
  • указатель ширины задает количество символов, которое должно содержаться в выводимых данных. Необязательный параметр;
  • указатель точности задает количество десятичных знаков, отображаемых для чисел с плавающей запятой. Необязательный параметр;
  • указатель типа задает тип, в соответствии с которым следует обрабатывать выводимые данные. Возможные значения:
    d десятичное число
    b двоичное число
    c ASCII-эквивалент
    f число с плавающей точкой двойной точности
    o восьмеричное число
    s строка
    x шестнадцатеричное число в нижнем регистре
    X шестнадцатеричное число в верхнем регистре
Пример 1

Анализ строк

PHP содержит множество функций, дающих информацию о строках. Наиболее употребимыми являются:

  • strlen() — определяет длину строки.
  • strstr() — определяет наличие подстроки в строке. Аргументы: исходная строка и искомая подстрока. Если такой подстроки в строке нет, функция возвращает false. Если подстрока в строке есть, функция возвращает часть исходной строки, которая начинается с искомой подстроки.
  • stristr() — работает так же, как и strstr(), но не различает регистры.
  • strpos() — определяет позицию подстроки в строке. Аргументы: исходная строка и искомая подстрока. Если такой подстроки в строке нет, функция возвращает false. Если подстрока в строке есть, функция возвращает номер символа, с которого начинается подстрока.
  • substr() — возвращает часть строки, ограниченную параметрами. Аргументы: исходная строка, начальная позиция, длина подстроки (необязательно). Если начальная позиция отрицательна, то отсчет идет от конца строки. Если длина не указана, возвращается остаток строки. Если длина отрицательна, то подстрока завершается на указанной позиции от конца строки.

Управление строками

PHP содержит множество функций управления строками. Наиболее употребимыми являются:

  • ltrim(), chop(), trim() — удаляют все разделители соответственно в начале строки, в конце строки, в начале и конце строки. К разделителям относятся следующие символы: «\n» (новая строка), «\r» (возврат каретки), «\t» (табуляция), простой пробел.
  • str_replace() — заменяет все экземпляры указанной подстроки в строке на новую подстроку. Аргументы: заменяемая подстрока, замещающая подстрока, исходная строка. Например:
  • substr_replace() — заменяет часть строки, ограниченную параметрами. Аргументы: исходная строка, замещающая подстрока, начальная позиция, длина заменяемой подстроки (необязательно). Если начальная позиция отрицательна, то отсчет идет от конца строки. Если длина не указана, используется вся длина строки. Если длина отрицательна, то замена завершается на указанной позиции от конца строки. Например:
  • strtoupper() — переводит символы строки в верхний регистр.
  • strtolower() — переводит символы строки в нижний регистр.
  • ucwords() — переводит в верхний регистр первый символ каждого слова.
  • explode() — разбивает строку на массив. Аргументы: строка-разделитель и исходная строка. Например:
  • implode() -объединяет элементы массива со строкой.

Функции работы со строками в PHP

  • addcslashes — Экранирует спецсимволы в стиле языка C
  • addslashes — Экранирует спецсимволы в строке
  • bin2hex — Преобразует бинарные данные в шестнадцатиричное представление
  • chr — Возвращает символ по его коду
  • chunk_split — Разбивает строку на фрагменты
  • convert_cyr_string — Преобразует строку из одной кириллической кодировки в другую
  • count_chars — Возвращает информацию о символах, входящих в строку
  • crc32 — Вычисляет CRC32 для строки
  • crypt — Необратимое шифрование (хэширование)
  • echo — Выводит одну или более строк
  • explode — Разбивает строку на подстроки
  • fprintf — Записывает отформатированную строку в поток
  • get_html_translation_table — Возвращает таблицу преобразований
  • hebrev — Преобразует текст на иврите из логической кодировки в визуальную
  • hebrevc — Преобразует текст на иврите из логической кодировки в визуальную с преобразованием перевод
  • htmlentities — Преобразует символы в соответствующие HTML сущности
  • htmlspecialchars — Преобразует специальные символы в HTML сущности
  • html_entity_decode — Преобразует HTML сущности в соответствующие символы
  • implode — Объединяет элементы массива в строку(массив в строку)
  • localeconv — Возвращает информацию о числовых форматах
  • ltrim — Удаляет пробелы из начала строки
  • md5 — Возвращает MD5 хэш строки
  • md5_file — Возвращает MD5 хэш файла
  • metaphone — Возвращает ключ metaphone для строки
  • nl2br — Вставляет HTML код разрыва строки перед каждым переводом строки
  • number_format — Форматирует число с разделением групп
  • ord — Возвращает ASCII код символа
  • parse_str — Разбирает строку в переменные
  • print — Выводит строку
  • printf — Выводит отформатированную строку
  • quoted_printable_decode — Раскодирует строку, закодированную методом quoted printable
  • quotemeta — Экранирует специальные символы
  • rtrim — Удаляет пробелы из конца строки
  • sha1 — Возвращает SHA1 хэш строки
  • sha1_file — Возвращает SHA1 хэш файла
  • similar_text — Вычисляет степень похожести двух строк
  • soundex — Возвращает ключ soundex для строки
  • sprintf — Возвращает отформатированную строку
  • sscanf — Разбирает строку в соответствии с заданным форматом
  • strcasecmp — Сравнение строк без учета регистра, безопасное для данных в двоичной форме
  • strcmp — Сравнение строк, безопасное для данных в двоичной форме
  • strcoll — Сравнение строк с учетом текущей локали
  • strcspn — Возвращает длину участка в начале строки, не соответствующего маске
  • stripcslashes — Удаляет экранирование символов, произведенное функцией addcslashes()
  • stripos — Возвращает позицию первого вхождения подстроки без учета регистра
  • stripslashes — Удаляет экранирование символов, произведенное функцией addslashes()
  • strip_tags — Удаляет HTML и PHP тэги из строки
  • stristr — Аналог функции strstr, но независит от регистра
  • strlen — Возвращает длину строки
  • strnatcasecmp — Сравнение строк без учета регистра с использованием алгоритма
  • strnatcmp — Сравнение строк с использованием алгоритма «естественного упорядочения»
  • strncasecmp — Сравнение первых n символов строк без учета регистра, безопасное для данных в двоичной форме
  • strncmp — Сравнение первых n символов строк без учета регистра, безопасное для данных в двоичной форме
  • strpos — Находит первое вхождение подстроки в строку
  • strrchr — Находит последнее вхождение символа в строку
  • strrev — Переворачивает строку
  • strripos — Возвращает позицию последнего вхождения подстроки без учета регистра
  • strrpos — Находит последнее вхождение символа в строку
  • strspn — Возвращает длину участка в начале строки, соответствующего маске
  • strstr — Находит первое вхождение подстроки
  • strtok — Разбивает строку
  • strtolower — Преобразует строку в нижний регистр
  • strtoupper — Преобразует строку в верхний регистр
  • strtr — Преобразует заданные символы
  • str_ireplace — Регистро-независимый вариант функции str_replace().
  • str_pad — Дополняет строку другой строкой до заданной длины
  • str_repeat — Возвращает повторяющуюся строку
  • str_replace — Заменяет строку поиска на строку замены
  • str_rot13 — Выполняет над строкой преобразование ROT13
  • str_shuffle — Переставляет символы в строке
  • str_split — Преобразует строку в массив
  • str_word_count — Возвращает информацию о словах, входящих в строку
  • substr — Функция возвращает часть строки
  • substr_count — Подсчитывает число вхождений подстроки в строку
  • substr_replace — Заменяет часть строки
  • trim — Удаляет пробелы из начала и конца строки
  • ucfirst — Преобразует первый символ строки в верхний регистр
  • ucwords — Преобразует в верхний регистр первый символ каждого слова в строке
  • vprintf — Выводит отформатированную строку
  • vsprintf — Возвращает отформатированную строку
  • wordwrap — Выполняет перенос строки на данное количество символов с использованием символа разрыва строки

Особенности операторов сравнения применительно к строкам.

Функция chop( ) возвращает строку после удаления из нее завершающих пропусков и символов новой строки. Синтаксис функции chop( ):

string chop(string строка)

В следующем примере функция chop( ) удаляет лишние символы новой строки:

str_pad()

Функция str_pad( ) выравнивает строку до определенной длины заданными символами и возвращает отформатированную строку. Синтаксис функции str_pad( ):

string str_pad (string строка, int длина_дополнения [, string дополнение [, int тип_дополнения]])

Если необязательный параметр дополнение не указан, строка дополняется пробелами. В противном случае строка дополняется заданными символами. По умолчанию строка дополняется справа; тем не менее, вы можете передать в параметре тип_дополнения константу STR_PAD_RIGHT, STR_PAD_LEFT или STR_PAD_BOTH, что приведет к дополнению строки в заданном направлении. Пример демонстрирует дополнение строки функцией str_pad( ) с параметрами по умолчанию:

В следующем примере используются необязательные параметры функции str_pad( ):

Сравнение двух строк

Сравнение двух строк принадлежит к числу важнейших строковых операций любого языка. Хотя эту задачу можно решить несколькими разными способами, в РНР существуют четыре функции сравнения строк:

  • strcmp()
  • strcasecmp()
  • strspn()
  • strcspn()
strcmp()

Функция strcmp( ) сравнивает две строки с учетом регистра символов. Синтаксис функции strcmp( ): int strcmp (string строка1, string строка2)

После завершения сравнения strcmp( ) возвращает одно из трех возможных значений:

  • 0, если строка1 и строка2 совпадают;
  • < 0, если строка1 меньше, чем строка2;
  • > 0, если строка2 меньше, чем строка1.

В следующем фрагменте сравниваются две одинаковые строки:

strcasecmp()

Функция strcasecmp( ) работает точно так же, как strcmp( ), за одним исключением — регистр символов при сравнении не учитывается. Синтаксис функции strcasecmp( ):

int strcasecmp (string cтpoкa1, string строка2)

В следующем фрагменте сравниваются две одинаковые строки:

strspn()

Функция strspn( ) возвращает длину первого сегмента строки1, содержащего символы, присутствующие в строке2. Синтаксис функции strspn( ):

int strspn (string строка1, string строка2)

Следующий фрагмент показывает, как функция strspn( ) используется для проверки пароля:

strcspn()

Функция strcspn( ) возвращает длину первого сегмента строки1, содержащего символы, отсутствующие в строке2. Синтаксис функции strcspn( ):

int strcspn (string строка1, string строка2)

В следующем фрагменте функция strcspn( ) используется для проверки пароля:

Обработка строковых данных без применения регулярных выражений

При обработке больших объемов информации функции регулярных выражений сильно замедляют выполнение программы. Эти функции следует применять лишь при обработке относительно сложных строк, в которых регулярные выражения действительно необходимы. Если же анализ текста выполняется по относительно простым правилам, можно воспользоваться стандартными функциями РНР, которые заметно ускоряют обработку. Все эти функции описаны ниже.

strtok()

Функция strtok( ) разбивает строку на лексемы по разделителям, заданным вторым параметром. Синтаксис функции strtok( ):

string strtok (string строка, string разделители)

У функции strtok( ) есть одна странность: чтобы полностью разделить строку, функцию необходимо последовательно вызвать несколько раз. При очередном вызове функция выделяет из строки следующую лексему. При этом параметр строка задается всего один раз — функция отслеживает текущую позицию в строке до тех пор, пока строка не будет полностью разобрана на лексемы или не будет задан новый параметр строка. Следующий пример демонстрирует разбиение строки по нескольким разделителям:

parse_str()

Функция parse_str( ) выделяет в строке пары <переменная-значение> и присваивает значения переменных в текущей области видимости. Синтаксис функции parse_str( ):

void parse_str (string строка)

Функция parse_str( ) особенно удобна при обработке URL, содержащих данные форм HTML или другую расширенную информацию. В следующем примере анализируется информация, переданная через URL. Строка представляет собой стандартный способ передачи данных между страницами либо откомпилированных в гиперссылке, либо введенных в форму HTML:

Поскольку эта функция создавалась для работы с URL, она игнорирует символ амперсанд (&).

explode()

Функция explode() делит строку на элементы и возвращает эти элементы в виде массива. Синтаксис функции explode():

array explode (string разделитель, string строка [, int порог])

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

Разделение строки функцией explode( ) продемонстрировано в следующем примере:

Функция explode( ) практически идентична функции регулярных выражений POSIX split( ), описанной выше. Главное различие заключается в том, что передача регулярных выражений в параметрах допускается только при вызове split( ).

implode()

Если функция explode( ) разделяет строку на элементы массива, то ее двойник — функция implode( ) — объединяет массив в строку. Синтаксис функции implode( ):

string implode (string разделитель, array фрагменты)

Формирование строки из массива продемонстрировано в следующем примере:

У implode( ) имеется псевдоним — функция join( ).

strpos()

Функция strpos( ) находит в строке первый экземпляр заданной подстроки. Синтаксис функции strpos():

int strpos (string строка, string подстрока [, int смещение])

Необязательный параметр offset задает позицию, с которой должен начинаться поиск. Если подстрока не найдена, strpos() возвращает FALSE (0).

В следующем примере определяется позиция первого вхождения даты в файл журнала:

strrpos()

Функция strrpos( ) находит в строке последний экземпляр заданного символа. Синтаксис функции strrpos( ):

int strpos (string строка, char символ)

По возможностям эта функция уступает своему двойнику — функции strpos( ), поскольку она позволяет искать только отдельный символ, а не всю строку. Если во втором параметре strrpos( ) передается строка, при поиске будет использован только ее первый символ.

str_replace()

Функция str_replace( ) ищет в строке все вхождения заданной подстроки и заменяет их новой подстрокой. Синтаксис функции str_replace( ):

string str_replace (string подстрока, string замена, string строка)

Функция substr_replace( ), описанная ниже в этом разделе, позволяет провести заме ну лишь в определенной части строки. Ниже показано, как функция str_replace( ) используется для проведения глобальной замены в строке.

Если подстрока ни разу не встречается в строке, исходная строка не изменяется:

strstr()

Функция strstr( ) возвращает часть строки, начинающуюся с первого вхождения заданной подстроки. Синтаксис функции strstr( ):

string strstr (string строка, string подстрока)

В следующем примере функция strstr( ) используется для выделения имени домена из URL:

substr()

Функция substr( ) возвращает часть строки, начинающуюся с заданной начальной позиции и имеющую заданную длину. Синтаксис функции substr( ):

string substr (string строка, int начало [, int длина])

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

  • если параметр начало положителен, возвращаемая подстрока начинается с позиции строки с заданным номером;
  • если параметр начало отрицателен, возвращаемая подстрока начинается с позиции (длина строки — начало);
  • если параметр длина положителен, в возвращаемую подстроку включаются все символы от позиции начало до позиции начало+длина. Если последняя величина превышает длину строки, возвращаются символы до конца строки;
  • если параметр длина отрицателен, возвращаемая подстрока заканчивается на заданном расстоянии от конца строки.

Помните о том, что параметр начало определяет смещение от первого символа строки; таким образом, возвращаемая строка в действительности начинается с символа с номером (начало + 1).

Следующий пример демонстрирует выделение части строки функцией substr( ):

Пример с положительным параметром длина:

Пример с отрицательным параметром длина:

substr_count()
substr_replace()

Функция substr_replace( ) заменяет часть строки, которая начинается с заданной позиции. Если задан необязательный параметр длина, заменяется фрагмент заданной длины; в противном случае производится замена по всей длине заменяющей строки. Синтаксис функции substr_replace( ):

string substr_replace (string строка, string замена, int начало [, int длина])

Параметры начало и длина задаются по определенным правилам:

  • если параметр начало положителен, замена начинается с заданной позиции;
  • если параметр начало отрицателен, замена начинается с позиции (длина строки -начало);
  • если параметр длина положителен, заменяется фрагмент заданной длины;
  • если параметр длина отрицателен, замена завершается в позиции (длина строки -длина).

Простая замена текста функцией substr_replace( ) продемонстрирована в следующем примере:

Преобразование строк и файлов к формату HTML и наоборот

Преобразовать строку или целый файл к формату, подходящему для просмотра в web-браузере (или наоборот), проще, чем может показаться на первый взгляд. В РНР для этого существуют специальные функции.

Преобразование текста в HTML

Быстрое преобразование простого текста к формату web-браузера — весьма распространенная задача. В ее решении вам помогут функции, описанные в этом разделе.

nl2br()

Функция nl2br() заменяет все символы новой строки (\n) эквивалентными конструкциями HTML.

Синтаксис функции nl2br():

string nl2br (string строка)

Символы новой строки могут быть как видимыми (то есть явно включенными в строку), так и невидимыми (например, введенными в редакторе). В следующем примере текстовая строка преобразуется в формат HTML посредством замены символов \n разрывами строк:

При последующем выводе $html_recipe браузеру будет передан следующий текст в формате HTML:

htmlentities()

Функция htmlentities( ) преобразует символы в эквивалентные конструкции HTML. Синтаксис функции htmlentities:

string htmlentities (string строка)

В следующем примере производится необходимая замена символов строки для вывода в браузере:

Функция htmlentities( ) в настоящее время работает только для символов кодировки ISO-8559-1 (ISO-Latin-1). Кроме того, она не преобразует пробелы в , как следовало бы ожидать.

htmlspecialchars()

Функция htmlspecialchars( ) заменяет некоторые символы, имеющие особый смысл в контексте HTML, эквивалентными конструкциями HTML. Синтаксис функции htmlspecialchars( ):

string htmlspecialchars (string строка)

Функция html special chars( ) в настоящее время преобразует следующие символы: & преобразуется в &; » » преобразуется в «; < преобразуется в <; > преобразуется в >.

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

Следующий пример демонстрирует удаление потенциально опасных символов функцией htmlspeclalchars( ):

Если функция htmlspecialchars( ) используется в сочетании с nl2br( ), то последнюю следует вызывать после htmlspecialchars( ). В противном случае конструкции <br>, сгенерированные при вызове nl2br( ), преобразуются в видимые символы.

get_html_translation_table()

Функция get_html_translation_table( ) обеспечивает удобные средства преобразования текста в эквиваленты HTML Синтаксис функции get_htrril_translation_table( ):

string get_html_translation_table (int таблица)

Функция get_html_translation_table( ) возвращает одну из двух таблиц преобразования (определяется параметром таблица), используемых в работе стандартных функций htmlspecialchars( ) и htmlentities( ). Возвращаемое значение может использоваться в сочетании с другой стандартной функцией, strtr(), для преобразования текста в код HTML.

Параметр таблица принимает одно из двух значений:

  • HTML_ENTITIES;
  • HTML_SPECIALCHARS.

В следующем примере функция get_html_translation_table( ) используется при преобразовании текста в код HTML:

Кстати, функция array_flip( ) позволяет провести преобразование текста в HTML в обратном направлении и восстановить исходный текст. Предположим, что вместо вывода результата strtr( ) в предыдущем примере мы присвоили его переменной $translated string.

В следующем примере исходный текст восстанавливается функцией array_flip( ):

strtr()

Функция strtr( ) транслирует строку, то есть заменяет в ней все символы, входящие в строку источник, соответствующими символами строки приемник. Синтаксис функции strtr( ):

string strtr (string строка, string источник, string приемник)

Если строки источник и приемник имеют разную длину, длинная строка усекается до размеров короткой строки.

Существует альтернативный синтаксис вызова strtr( ) с двумя параметрами; в этом случае второй параметр содержит ассоциативный массив, ключи которого соответствуют заменяемым подстрокам, а значения — заменяющим подстрокам. В следующем примере теги HTML заменяются XML-подобными конструкциями:

Преобразование HTML в простой текст

Иногда возникает необходимость преобразовать файл в формате HTML в простой текст. Функции, описанные ниже, помогут вам в решении этой задачи.

strip_tags()

Функция strip_tags( ) удаляет из строки все теги HTML и РНР, оставляя в ней только текст. Синтаксис функции strip_tags( ):

string strip_tags (string строка [, string разрешенные_тerи])

Необязательный параметр разрешенные_теги позволяет указать теги, которые должны пропускаться в процессе удаления.

Ниже приведен пример удаления из строки всех тегов HTML функцией strip_tags( ):

В следующем примере удаляются не все, а лишь некоторые теги:

Удаление тегов из текста также производится функцией fgetss().

get_meta_tags()

Хотя функция get_meta_tags( ) и не имеет прямого отношения к преобразованию текста, зто весьма полезная функция, о которой следует упомянуть. Синтаксис функции get_meta_tags( ):

array get_meta_tags (string имя_файла/URL [, int включение_пути])

Функция get_meta_tags( ) предназначена для поиска в файле HTML тегов МЕТА.

Теги МЕТА содержат информацию о странице, используемую главным образом поисковыми системами. Эти теги находятся внутри пары тегов . Применение тегов МЕТА продемонстрировано в следующем фрагменте (назовем его example.html, поскольку он будет использоваться в листинге 8.2): [/html] PHP Recipes [/html] Функция get_meta_tags( ) ищет в заголовке документа теги, начинающиеся словом МЕТА, и сохраняет имена тегов и их содержимое в ассоциативном массиве. В листинге 8.2 продемонстрировано применение этой функции к файлу example.html. Листинг 8.2. Извлечение тегов МЕТА из файла HTML функцией get_meta_tags( )

Интересная подробность: данные тегов МЕТА можно извлекать не только из файлов, находящихся на сервере, но и из других URL.

Преобразование строки к верхнему и нижнему регистру

В РНР существует четыре функции, предназначенных для изменения регистра строки:

  • strtolower();
  • strtoupper();
  • ucfirst();
  • ucwords().
strtolower( )

Функция strtolower( ) преобразует все алфавитные символы строки к нижнему регистру. Синтаксис функции strtolower():

string strtolower(string строка)

Неалфавитные символы функцией не изменяются. Преобразование строки к нижнему регистру функцией strtolower() продемонстрировано в следующем примере:

strtoupper()

Строки можно преобразовывать не только к нижнему, но и к верхнему регистру. Преобразование выполняется функцией strtoupper(), имеющей следующий синтаксис:

string strtoupper (string строка)

Неалфавитные символы функцией не изменяются. Преобразование строки к верхнему регистру функцией strtoupper() продемонстрировано в следующем примере:

ucfirst()

Функция ucfirst( ) преобразует к верхнему регистру первый символ строки — при условии, что он является алфавитным символом. Синтаксис функции ucfirst():

string ucfirst (string строка)

Неалфавитные символы функцией не изменяются. Преобразование первого символа строки функцией ucfirst() продемонстрировано в следующем примере:

ucwords()

Функция ucwords( ) преобразует к верхнему регистру первую букву каждого слова в строке. Синтаксис функции ucwords():

string ucwords (string строка»)

Неалфавитные символы функцией не изменяются. «Слово» определяется как последовательность символов, отделенная от других элементов строки пробелами. В следующем примере продемонстрировано преобразование первых символов слов функцией ucwords( ):

strrchr()

strrchr(«строка», «о») — Находит последнее вхождение подстроки

Если подстрока не найдена, возвращает FALSE.

В отличие от strchr(), если искомая строка состоит более чем из одного символа, используется только первый символ.

Если второй параметр не является строкой, он приводится к целому и трактуется как код символа.

highlight_string()

mixed highlight_string (string str [, bool return])

Функция highlight_string() выводит версию с расцвеченным синтаксисом строки str, используя цвета, определённые во встроенном выделении синтаксиса PHP.

Если второй параметр return имеет значение TRUE, то highlight_string() возвратит версию раскрашенного кода как строку, вместо её печати. Если второй параметр не имеет значение TRUE, highlight_string() возвратит TRUE при успехе, FALSE при неудаче.

Примечание: 1.параметр return стал доступен, начиная с PHP 4.2.0. До этого он работал, как по умолчанию, т.е. FALSE.
2.Функция Highlight_String() различает PHP код по тегам <?php ?>. show_source() — синоним highlight_file(). Для изменения цвета выделения по умолчанию используйте следующие PHP директивы:

в .htaccess: в PHP:

addslashes()

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

Экранируются одиночная кавычка (‘), дойная кавычка («), обратный слэш (\) и NUL (байт NULL).

Как изменить расстояние между строками, словами и абзацами в Word

Текст на странице складывается из букв, слов строк и абзацев. Он должен легко читаться и выглядеть красиво. Достигается это различными инструментами форматирования. Правильно расставленное расстояние между всеми его параметрами выделяет структурные единицы документа и создает гармоничную композицию.

Благодаря разнице расстояний между буквами в слове и пробелами между словами и строками выделяются слова в тексте. Это облегчает чтение.

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

Какое расстояние между строками можно настроить в Ворде

В Word расстояние между всеми компонентами текста называется интервалами. Их можно регулировать при помощи инструментов форматирования:

  • Расстояние между буквами в словах устанавливается по умолчанию. При необходимости можно применить либо разреженный текст или наоборот его сжать.
  • Интервал между строк — это важный параметр форматирования текста. Как правило, зависит от размера шрифта и является кратным ему. В научных работах и деловом документообороте он регламентирован ГОСТ. В документах малого формата (А5) используется одинарный интервал для оптимального размещения объема текста. Такой же размер применяется в книгах, статьях.
  • Расстояние между абзацами принято увеличивать по сравнению с межстрочным интервалом. Как было сказано выше, чтобы выделить мысли каждого абзаца, а также для быстрого поиска нужного текста. Этот параметр также регулируется ГОСТ.

Как изменить расстояние между строками в Ворде

Межстрочное расстояние, установленное по умолчанию не всегда устраивает. Изменить его можно двумя способами, в зависимости от объема текста и поставленных задач, в некоторых случаях требуется уменьшить расстояние между строчками, в некоторых увеличить.

Для настройки одинакового интервала по всему тексту или изменения только в конкретном абзаце применяется инструмент «Интервал».

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

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

Как уменьшить расстояние между строками

В силу ограниченности места или необходимости применения одинарного интервала (по умолчанию в Word установлено расстояние между строками 1,15) бывает потребность уменьшить расстояния между строками внутри абзаца.

Чтобы при этом сохранить интервал между абзацами и заголовками, надо поменять настройку междустрочного интервала в шаблоне «Обычный», который используется по умолчанию при наборе текста. Так как заголовки имеют другой шаблон стиля, их эти изменения не коснуться.

Порядок действий для внесения изменений в расстояние между строками:

Как изменить расстояние между строчек в Word

  • В закладке «Главная» или «Дизайн» выбрать шаблон «Обычный» в поле предложенных стилей;
  • Раскрыть контекстное меню правой клавишей мыши, применить команду «Изменить»;
  • В блоке «Форматирование» выбрать кнопку с обозначением одинарного интервала;
  • Установить галку в строке «только для текущего документа», а если изменения постоянные, то «в новых документах использующих этот шаблон»;
  • Нажать кнопку «ОК» для подтверждения.

Как изменить расстояние между строчек в Word

Как увеличить расстояние между строками

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

Рассмотрим, как увеличить расстояния между строками и задать параметр в стилях, который можно будет применить к последующим документам:

  1. В закладке «Главная» или «Дизайн» выбрать шаблон «Обычный» в поле предложенных стилей;
  2. Раскрыть контекстное меню правой клавишей мыши, применить команду «Изменить»;
  3. В блоке «Форматирование» выбрать кнопку с обозначением полуторного или двойного интервала;
  4. Установить галку в строке «только для текущего документа», а если изменения постоянные, то «в новых документах использующих этот шаблон»;
  5. Нажать кнопку «ОК» для подтверждения.

Примечание. При необходимости установить нестандартный увеличенный или уменьшенный интервал, надо применить дополнительные действия:

  1. Раскрыть список команд кнопки «Формат» и выбрать раздел «Абзац»;
  2. В строке «междустрочный» (блок «Интервал») выбрать нужный вариант;
  3. Выставить числовое значение рядом в окошке.

Как увеличить расстояние между строчками в Ворд

Как сделать одинаковое расстояние между строками

Работая с документами, которые изначально были созданы не вами, порой встает вопрос изменить расстояние между сточками на интересующий вас, либо вовсе привести документ к одинаковому форматированию.

Когда есть необходимость установить одинаковые междустрочные расстояния, включая промежутки между абзацами и заголовками проще и быстрее использовать инструмент «Интервал». Работает это следующим образом:

  1. Выделить текст документа целиком клавишами «Ctrl» + «A» (одновременно);
  2. Во вкладке «Главная» найти инструмент «Интервал»;
  3. Открыть список возможных изменений межстрочных промежутков, поставить галку напротив нужного значения.

Делаем одинаковое расстояние между строками во всем документе Word

Как менять расстояние между строками для фрагмента текста

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

На самом деле, изменить расстояние между строчек какого то фрагмента текста, очень просто. Сделаем следующее:

  1. Выделим интересующий участок текста (этот пункт подробно описан в статье 8 распространенных способов выделить текст в Word).
  2. Перейдем во вкладку «Главная» и в блоке «Абзац» используем команду «Интервал».
  3. Из выпадающего меню, выберите интересующий интервал и поставьте на нем галочку.

Варианты настройки расстояния между строками

Для более точных настроек интервалов между строками применяется окно «Абзац». Открыть его можно, выполнив цепочку команд: «Главная» → «Интервал» → «Другие варианты».

Настройка интервалов выполняется в строчках:

  • Перед — устанавливает расстояние перед абзацем;
  • После — устанавливается расстояние после абзаца;
  • «Междустрочный» и «Значение» (разберемся подробнее).

Описание предлагаемых интервалов:

  • «Одинарный», «Двойной», «1,5 строки» – стандартные интервалы.
  • «Минимум» – ориентируется на самый крупный знак в тексте. (примерно равен одинарному расстоянию между строк).
  • «Точно» – задаёт цифровое значение интервала. Его надо внести в окошко «Значение».
  • «Множитель» – этот интервал позволяет, как уменьшать интервалы, так их и увеличивать. Так, например, при установке цифры 4 в поле «Значение» одинарный интервал будет увеличен в 4 раза, а с цифрой 0,8 расстояние будет меньше одинарного интервала 20%.

Настройка расстояния между строк в Ворде

Совет. Если произошло наложение строк, интервал был задан не корректно и его надо увеличить до минимально возможного.

Как установить расстояние между абзацем, словами и буквами в Word

Кроме регулировки межстрочных расстояний в Word существуют настройки расстояний между абзацами, буквами и словами. Так же как и расстояние между строками, рассматриваемые параметры влияют на облегчение чтения документа и придания ему отформатированного вида.

Расстояние между абзацами

Расстояние между абзацами в некоторых работах регламентировано ГОСТом, поэтому в большинстве случаев оно задано по умолчанию и не требует изменения.

По ГОСТ 2.105-95 промежуток между заголовком и текстом 3 — 4 интервала (это одна пропущенная строка или чуть больше). Заголовки раздела и входящих в него подразделов разделяются двойным интервалом. Настройка промежутка между абзацами выполняется следующим образом:

  1. В закладке «Главная» применить «Изменить стили»;
  2. Из списка инструментов выбрать строку «Интервал между абзацами»;
  3. Щелкнуть мышью по предложенному шаблону или выбрать строку «Пользовательские интервалы…»;
  4. После открытия окна «Управление стилями» установить цифровые значение или выбрать стрелками в поле «Перед» расстояние до абзаца, в поле «После» – расстояние до следующего абзаца.

Если между абзацами не нужны дополнительные строки или дополнительные интервалы, надо установить галку в строке «Не добавлять интервал…».

Удалить интервалы между абзацами можно, применяя соответствующие строки команд в составе инструмента «Интервал» (Главная →Абзац).

Расстояние между словами

Расстояние между словами нужно уменьшить или увеличить. Это иногда полезно использовать в конце строки или заголовках. Каждый пробел надо менять индивидуально. Алгоритм выполнения:

  • выделить два соседних слова;
  • выбрать инструмент «Символ» из закладки «Вставка»;
  • применить «Другие символы» и найти раздел «Специальные знаки»;
  • из списка выбрать пробелы: короткий, длинный или ¼.

Расстояние между буквами

Расстояние между буквами также можно регулировать. Применяется для размещения на ограниченном пространстве, либо для выделения некоторых слов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *