Php подстановка переменных в строку. Str_replace - Заменяет все вхождения строки поиска на строку замены
mixed preg_replace (mixed pattern, mixed replacement, mixed subject [, int limit])Выполняет поиск в строке subject совпадений с шаблоном pattern и заменяет их на replacement . В случае, если параметр limit указан, будет произведена замена limit вхождений шаблона; в случае, если limit опущен либо равняется -1, будут заменены все вхождения шаблона.
Replacement может содержать ссылки вида \\ n либо (начиная с PHP 4.0.4) $n , причем последний вариант предпочтительней. Каждая такая ссылка, будет заменена на подстроку, соответствующую n "нной заключенной в круглые скобки подмаске. n может принимать значения от 0 до 99, причем ссылка \\0 (либо $0) соответствует вхождению всего шаблона. Подмаски нумеруются слева направо, начиная с единицы.
При использовании замены по шаблону с использованием ссылок на подмаски может возникнуть ситуация, когда непосредственно за маской следует цифра. В таком случае нотация вида \\n приводит к ошибке: ссылка на первую подмаску, за которой следует цифра 1, запишется как \\11 , что будет интерпретировано как ссылка на одиннадцатую подмаску. Это недоразумение можно устранить, если воспользоваться конструкцией \${1}1 , указывающей на изолированную ссылку на первую подмаску, и следующую за ней цифру 1 .
Результатом работы этого примера будет:
April1,2003 |
Если во время выполнения функции были обнаружены совпадения с шаблоном, будет возвращено измененное значение subject , в противном случае будет возвращен исходный текст subject .
Первые три параметра функции preg_replace() могут быть одномерными массивами. В случае, если массив использует ключи, при обработке массива они будут взяты в том порядке, в котором они расположены в массиве. Указание ключей в массиве для pattern и replacement не является обязательным. Если вы все же решили использовать индексы, для сопоставления шаблонов и строк, участвующих в замене, используйте функцию ksort() для каждого из массивов.
Пример 2. Использование массивов с числовыми индексами в качестве аргументов функции preg_replace() Результат: Результат:
|
В случае, если параметр subject является массивом, поиск и замена по шаблону производятся для каждого из его элементов. Возвращаемый результат также будет массивом.
В случае, если параметры pattern и replacement являются массивами, preg_replace() поочередно извлекает из обоих массивов по паре элементов и использует их для операции поиска и замены. Если массив replacement содержит больше элементов, чем pattern , вместо недостающих элементов для замены будут взяты пустые строки. В случае, если pattern является массивом, а replacement - строкой, по каждому элементу массива pattern будет осущесвтлен поиск и замена на pattern (шаблоном будут поочередно все элементы массива, в то время как строка замены остается фиксированной). Вариант, когда pattern является строкой, а replacement - массивом, не имеет смысла.
Модификатор /e меняет поведение функции preg_replace() таким образом, что параметр replacement после выполнения необходимых подстановок интерпретируется как PHP-код и только после этого используется для замены. Используя данный модификатор, будьте внимательны: параметр replacement должен содержать корректный PHP-код, в противном случае в строке, содержащей вызов функции preg_replace() , возникнет ошибка синтаксиса.
Пример 3. Замена по нескольким шаблонам Этот пример выведет: Преобразует все HTML-теги к верхнему регистру |
Пример 5. Конвертор HTML в текст |
Безусловно, изображения, звуковые файлы, видеоинформация, анимационные данные и аплеты составляют важную часть информационного наполнения World Wide Web, но подавляющая часть данных в веб все еще представлена в виде текста - последовательностей символов, подобных данному предложению. Основным типом данных PHP, предназначенным для представления текста, является строка.
Описание строк в PHPСтроки - это последовательности символов, которые могут рассматриваться как единое целое - присваиваться переменным, передаваться в качестве входных данных в функции, возвращаться из функций или отправляться в качестве выходных данных для отображения на веб-странице пользователя. Простейший способ задания строки в коде PHP состоит в заключении последовательности символов в кавычки, одинарные (") или двойные ("), например, следующим образом:
$myString = "Простая строка"; $anotherString = "Еще одна строка";
Различие между одинарными и двойными кавычками обусловлено тем, насколько интенсивной интерпретации подвергаются в среде PHP символы, заключенные в кавычки, перед созданием самой строки. Если строка заключена в одинарные кавычки, то не выполняется почти никакая интерпретация, а если строка заключена в двойные кавычки, то в среде PHP осуществляется подстановка значений всех переменных, которые указаны в строке, а также выполняется замена некоторых специальных символьных последовательностей, которые начинаются с символа обратной косой черты ().
Например, после обработки следующего кода, входящего в состав веб-страницы:
$count = 13;
$string1 = "В строке \"Hello, world!\" $count символов.
";
$string2 = "В строке \"Hello, world!\" $count символов.
";
echo $string1;
echo $string2;
можно рассчитывать на получение в окне браузера такого вывода:
В большинстве ситуаций можно просто включить переменную в строку с двойными кавычками, и значение переменной будет подставлено в строку во время обработки строки интерпретатором. Но в двух описанных ниже ситуациях может оказаться, что интерпретатор строк не способен принять обоснованное решение и ему требуются дополнительные указания от разработчика.
Первая ситуация состоит в том, что интерпретатор не может определить, где оканчивается имя переменной, а вторая ситуация возникает, когда необходимо подставить в строку не значение простой переменной, а значение выражения. В этих случаях разработчик может внести ясность, заключив имя или выражение, подлежащее обработке, в фигурные скобки ({}).
Например, интерпретатор PHP не испытывает затруднений при обработке следующего кода:
$sport = "волейбол"; $play = "Я люблю играть в $sport.";
В таких случаях интерпретатор обнаруживает символ $, после чего начинает собирать символы в подстроку для выявления имени переменной и выполняет такую сборку до тех пор, пока не встретится пробел или точку, которые следуют за именем переменной $sport. Пробелы и точки не могут входить в состав имени переменной, поэтому становится ясно, что рассматриваемая переменная имеет имя $sport; после этого интерпретатор PHP успешно находит значение для данной переменной ("волейбол") и подставляет его.
Но иногда не существует возможности обозначить конец имени переменной с помощью пробела или точки. Рассмотрим следующий пример:
$sport1 = "волей"; $sport2 = "фут"; $sport3 = "баскет"; // Неправильные конструкции $play1 = "Я люблю играть в $sport1бол."; $play2 = "Я люблю играть в $sport2бол."; $play3 = "Я люблю играть в $sport3бол.";
В данном случае не будет достигнут желаемый эффект, поскольку интерпретатор PHP будет рассматривать строку $sport1 как часть имени переменной $sport1бол, которой, по всей видимости, не присвоено какое-либо значение. Вместо этого необходимо применять такую запись:
// Правильная конструкция $play1 = "Я люблю играть в {$sport1}бол."; $play2 = "Я люблю играть в {$sport2}бол."; $play3 = "Я люблю играть в {$sport3}бол.";
Эта запись служит для интерпретатора PHP указанием на то, что перед подстановкой значений необходимо вычислить только значение выражения с именем переменной, заключенным в фигурные скобки.
По аналогичным причинам интерпретатор PHP, если не используются фигурные скобки, сталкивается с затруднениями при подстановке значений сложных выражений с именами переменных, наподобие обращений к элементам многомерных массивов и к объектным переменным. Общее правило состоит в том, что если за открывающей фигурной скобкой ({) непосредственно следует символ $, то интерпретатор PHP вычисляет значение выражения с именем переменной вплоть до закрывающей фигурной скобки (}), а затем подставляет результирующее значение в строку. (Если требуется, чтобы в строке появилось литеральное значение {$, это можно обеспечить, поставив перед каждым из этих символов обратную косую черту, \).
Символы и индексы символов в строкахВ отличие от некоторых других языков программирования в языке PHP нет отдельного символьного типа, не совпадающего со строковым типом. Вообще говоря, функции, которые требуют в других языках применения символьных фактических параметров, в языке PHP рассчитаны на получение строк с длиной 1.
Выборка отдельных символов из строки может осуществляться путем указания порядкового номера символа, начинающегося с нуля, который должен быть указан в фигурных скобках непосредственно за именем строковой переменной. Такие символы фактически представляют собой односимвольные строки. Например, выполнение следующего кода:
$myString = "Doubled"; for ($index = 0; $index < strlen($myString); $index++) { $char = $myString{$index}; print("$char$char"); }
приводит к получению в окне браузера такого вывода:
Очевидно, что при каждом проходе по циклу каждый символ строки выводится дважды. Функция strlen() возвращает длину строки.
Операции со строкамиВ языке PHP предусмотрены две строковые операции: операция со знаком операции точка (.), или операция конкатенации, и операция со знаком операции точка и знак равенства (.=), или операция конкатенации и присваивания. Рассмотрим следующий пример:
$string1 = "Это часть";
$string2 = "строки";
// Конкатенация строк
echo $string1." простой ".$string2."
"; // "Это часть простой строки"
// Конкатенация и присваивание
$string1 .= " простой "; // Эквивалентно $string1 = $string1." простой ";
$string1 .= $string2;
echo $string1; // "Это часть простой строки"
Следует отметить, что в приведенном выше примере первому оператору echo не передается несколько строковых фактических параметров; передается только один строковый фактический параметр, созданный в результате конкатенации четырех строк. Первая и третья строки заданы с помощью переменных, а вторая и четвертая строки представляют собой литеральную строку, заключенную в двойные кавычки.
Синтаксическая структура вложенного документа (Heredoc)Кроме синтаксических структур строк в одинарных и двойных кавычках, в языке PHP предусмотрен еще один способ задания строки, называемый синтаксической структурой вложенного документа (Heredoc) . Как оказалось, подобная синтаксическая структура является весьма удобным средством задания больших фрагментов текста, подставляемого с помощью переменных, поскольку избавляет пользователя от необходимости обозначать внутренние кавычки с помощью специальных символов. Такой способ особенно удобен при создании страниц, которые содержат формы HTML.
Знаком операции, применяемом в синтаксической структуре вложенного документа, является (