Язык программирования PHP - [38]

Шрифт
Интервал

>print_r($new_greet);

> //выводим полученный массив

>?>



В результате получим такой массив:


>Array (

>[0] => Доброе утро

>[1] => Доброе утро всем!

>[2] => Доброе утро, дорогая!

>[3] => День добрый

>[4] => День добрый, товарищи

>[5] =>

>)



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


>

>$greeting = array("Привет", "Привет всем!",

> "Привет, дорогая!", "Здравствуйте",

> "Здравствуйте, товарищи");

> // объект

>$search = array ("Привет","Здравствуйте");

> // значения, которые будем заменять

>$replace = "День добрый";

> // значение, которым будем заменять

>$new_greet = str_replace($search,

> $replace, $greeting); // делаем замену

>print_r($new_greet);

> //выводим полученный массив

>?>



Получим:


>Array (

>[0] => День добрый

>[1] => День добрый всем!

>[2] => День добрый, дорогая!

>[3] => День добрый

>[4] => День добрый, товарищи

>)



Функция str_replace() чувствительна к регистру, но существует ее регистронезависимый аналог – функция str_ireplace(). Однако эта функция поддерживается не во всех версиях PHP.


Еще один пример использования функции str_replace() – обработка шаблонов.


Обратимся в очередной раз к описанию какого-либо документа, например статьи. Много раз мы уже создавали форму для ввода подобного описания и даже отображали данные, введенные пользователем в такого рода форму. Но как отображать эти данные, мы описывали непосредственно в коде нашей программы. Теперь мы хотим, чтобы способ отображения данных задавал сам пользователь. Для этого добавим в нашу форму еще один элемент для ввода шаблона.


>

Введите описание статьи

>

>

>

>

>

>

>

>

Название

> type=text name=title >

Краткое содержание

> type=text name=description >

Автор

> type=text name=author >

Дата публикации

> type=text name=published >

Шаблон документа

> name=shablon >

>

>



Однако просто поля для ввода шаблона недостаточно. Один человек введет в него одно, другой – другое. Нужно договориться о том, как создавать шаблоны, что можно в них использовать, т.е. нужно придумать язык шаблонов. Например, мы договариваемся, что при создании шаблона можно задействовать любые html-теги, а набор спецсимволов вида определяет значение элемента с именем имя_элемента. Далее, как обрабатывать такого рода шаблоны? Можно использовать функцию str_replace():


>

>$tmpl = $_GET["shablon"];

>/* шаблон, введенный пользователем.

>Например, это может быть такая строка:

>"

>size=-1>

>align=right>

" */

>function Show(){

> // функция, которая производит замену

> // элемента шаблона на его значение

>global $tmpl;

>foreach($_GET as $k => $v) {

> $tmpl = str_replace("",$v,$tmpl);

>}

>echo $tmpl;

>}

>Show();

>?>



Как эти файлы выглядят для обычного пользователя? Если мы введем в форму такие данные как показано на рисунке 8.1, то в результате получим:


>Первая машина для переписи населения

>Идея наносить данные на перфокарты и затем

>считывать и обрабатывать их автоматически

>принадлежала Джону Биллингсу, а ее

>техническое решение осуществил Герман

>Холлерит. Перфокарта Холлерита оказалась

>настолько удачной, что без малейших изменений

>просуществовала до наших дней.

> А. М. Федотов

> 12.02.03




Рис. 8.1.  Форма для ввода описания документа «статья» и шаблона для его отображения

Функция substr_replace


Эта функция сочетает в себе свойства двух уже рассмотренных нами функций – функции str_replace() и substr(). Ее синтаксис таков:


>substr_replace (исходная строка,

> строка для замены,

> позиция начального символа [, длина])


Эта функция заменяет часть строки строкой, предназначенной для замены. Заменяется та часть строки (т.е. подстрока), которая начинается с позиции, указанной параметром позиция начального символа. С помощью дополнительного аргумента длина можно ограничить число заменяемых символов. То есть, фактически, мы не указываем конкретно строку, которую нужно заменить, мы только описываем, где она находится и, возможно, какую длину имеет. В этом отличие функции substr_replace() от str_replace().


Как и в случае с функцией substr() аргументы позиция начального символа и длина могут быть отрицательными. Если позиция начального символа отрицательна, то замена производится, начиная с этой позиции относительно конца строки. Отрицательная длина задает, сколько символов от конца строки не должно быть заменено. Если длина не указывается, то замена происходит до конца строки.


>

>$text = "Меня зовут Вася.";

>echo "Исходная строка: $text


\n";

>/* Следующие две строки заменят всю

>исходную строку строкой 'А меня – Петя' */

>echo substr_replace($text, 'А меня – Петя',

> 0) . "
\n";

>echo substr_replace($text, 'А меня – Петя',

> 0, strlen($text)) . "
\n";

>// Следующая строка добавит слово 'Привет! '


Рекомендуем почитать
Половая идентификация ребенка в кинетическом рисунке семьи

Здоровые семейные отношения – это залог успешной полоролевой идентификации ребёнка. Начинаясь с рождения, процесс идентификации протекает непрерывно, с заострениями и актуализациями переживаний на кризисных этапах психосексуального развития. Одним из таких этапов является возраст эдипова комплекса. Конфликты и искажения воспитательного процесса на этом этапе никогда не проходят бесследно и могут с новой силой реанимироваться уже в подростковом возрасте. В пособии представлены основные критерии анализа и подходы к пониманию проблем половой идентификации ребёнка с помощью популярной рисуночной методики.


Искусство Древней Греции и Рима: учебно-методическое пособие

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


Самоучитель Adobe After Effects 6.0

Обучение созданию профессиональных видеофильмов и обработки их на компьютере представлено в виде 12 уроков. Рассматривается, как с помощью программы Adobe After Effects можно редактировать и рисовать последовательность кадров, добавлять титры и заголовки, применять различные видеоэффекты, редактировать звуковое сопровождение фильма. Описывается процесс настройки прозрачности и наложения слоев видео для последующего экспорта фильма в различных форматах. Показываются способы создания анимации при масштабировании, поворотах и в движении с наложением титров и спецэффектов.


История русской литературы XX века (20–90–е годы). Основные имена

Книга является пособием по истории русской литературы XX века (20-90-е годы). Она представляет собой первый том, за которым последует продолжение — «Литературный процесс» (в двух частях). Пособие призвано отразить современный научный взгляд на основные художественные ценности и тенденции развития русской литературы XX века.Издание предназначено для студентов филологических факультетов российских университетов, а также для аспирантов и преподавателей, — всех, кто занимается русской литературой.


Материаловедение

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


Микроэкономика

В данном конспекте лекций в доступной форме изложены все основные вопросы по дисциплине «микроэкономика».Книга поможет получить основные знания и подготовиться к зачету или экзамену. Рекомендуется студентам экономических специальностей.