52568.fb2
[4] => День добрый, товарищи
)
Функция str_replace() чувствительна к регистру, но существует ее регистронезависимый аналог – функция str_ireplace(). Однако эта функция поддерживается не во всех версиях PHP.
Еще один пример использования функции str_replace() – обработка шаблонов.
Обратимся в очередной раз к описанию какого-либо документа, например статьи. Много раз мы уже создавали форму для ввода подобного описания и даже отображали данные, введенные пользователем в такого рода форму. Но как отображать эти данные, мы описывали непосредственно в коде нашей программы. Теперь мы хотим, чтобы способ отображения данных задавал сам пользователь. Для этого добавим в нашу форму еще один элемент для ввода шаблона.
<h2>Введите описание статьи</h2>
<form action=sbl.php>
<table border=0>
<tr><td>Название </td><td><input
type=text name=title > </td></tr>
<tr><td>Краткое содержание </td><td><input
type=text name=description > </td></tr>
<tr><td>Автор </td><td><input
type=text name=author > </td></tr>
<tr><td>Дата публикации </td><td><input
type=text name=published ></td></tr>
<tr><td>Шаблон документа </td><td><textarea
name=shablon ></textarea></td></tr>
</table>
<input type=submit value="Отправить">
</form>
Однако просто поля для ввода шаблона недостаточно. Один человек введет в него одно, другой – другое. Нужно договориться о том, как создавать шаблоны, что можно в них использовать, т.е. нужно придумать язык шаблонов. Например, мы договариваемся, что при создании шаблона можно задействовать любые html-теги, а набор спецсимволов вида <!имя_элемента> определяет значение элемента с именем имя_элемента. Далее, как обрабатывать такого рода шаблоны? Можно использовать функцию str_replace():
<?php
$tmpl = $_GET["shablon"];
/* шаблон, введенный пользователем.
Например, это может быть такая строка:
"<h1><!title></h1> <p><font
size=-1><!description></font></p><p
align=right><!author><br><!published></p>" */
function Show(){
// функция, которая производит замену
// элемента шаблона на его значение
global $tmpl;
foreach($_GET as $k => $v) {
$tmpl = str_replace("<!$k>",$v,$tmpl);
}
echo $tmpl;
}
Show();
?>
Как эти файлы выглядят для обычного пользователя? Если мы введем в форму такие данные как показано на рисунке 8.1, то в результате получим:
Первая машина для переписи населения
Идея наносить данные на перфокарты и затем
считывать и обрабатывать их автоматически
принадлежала Джону Биллингсу, а ее
техническое решение осуществил Герман
Холлерит. Перфокарта Холлерита оказалась