САМОУЧИТЕЛЬ PHP 4

Комплексная замена в строке


В предыдущей главе мы рассматривали функцию strtr(),

которая заменяла в строке одни буквы на другие, и функцию str_replace(), осуществляющую контекстный поиск и замену. В свете ассоциативных массивов эти две функции объединяются в одну, также называющуюся strtr()[E60], но несущую в себе возможности str_replace().

string strtr(string $st, array $Substitutes)

Эта функция (заметьте — с двумя параметрами, а не с тремя, как обычная strtr()!) берет строку $st и проводит в ней контекстный поиск и замену: ищутся подстроки — ключи в массиве $Substitutes — и замещаются на соответствующие им значения. Таким образом, теперь мы можем выполнить несколько замен сразу, не используя str_replace() в цикле:

$Subs=array(

  "<name>" => "Larry",

  "<time>" => date("d.m.Y")

);

$st="Ïðèâåò, <name>! Ñåé÷àñ <time>";

echo strtr($st,$Subs);

А вот как можно "отменить" действие функции HtmlSpecialChars():

$Trans=array_flip(get_html_translation_table());

$st=strtr($st, $Trans);

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

Функция strtr()

начинает поиск с самой длинной подстроки и не проходит по одному и тому же ключу дважды.



Содержание раздела