Комплексная замена в строке
strtr Комплексная замена в строке. Синтаксис : string strtr(string str, string from, string to) string strtr(string str, array from) В первом случае функция strtr() возвращает строку str, у которой каждый символ, присутствующий в строку from, заменяется на корреспондирующий из строки to. В случае, если строки from и to различной длины, то лишние конечные символы длинной строки игнорируются. Во втором случае функция strtr() возвращает строку, в которой фрагменты строки str заменяются на соответствующие индексам значения элементов массива from. При этом функция пытается заменить сначало наибольшие фрагменты исходной строки и не выполняет замену в уже модифицированных частях строки. Таким бразом, теперь мы можем выполнить несколько замен сразу:
$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-эквиваленты, получим исходную строку.
Работа с несколькими массивами
array_diff Определение исключительного пересечения массивов. Синтаксис : array array_diff(array arr1, array arr2 [, array ...]) Данная функция возвращает массив, который содержит значения, имеющиеся только в массиве arr1 ( и не имеющиеся в любых других). При этом индексы не сохраняются.
$arr1 = array("a" => "green", "red", "blue");
$arr2 = array("b" => "green", "yellow", "red");
$result = array_diff($arr1, $arr2);
// $result = array("blue")
array_intersect Определение включительного пересечения массивов. Синтаксис : array array_intersect(array arr1, array arr2 [, array ...]) Функция array_intersect() возвращает массив, который содержит значения массива arr1, имеющиеся во всех остальных массивах. При этом индексы не сохраняются.
$arr1 = array("a" => "green", "red", "blue");
$arr2 = array("b" => "green", "yellow", "red");
$result = array_intersect($arr1, $arr2);
// $result = array("a" => "green", "red")
array_merge Слияние массивов. Синтаксис : array array_merge(array arr1, array arr2 [, array ...]) Функция array_merge() призвана устранить все недостатки, присущие оператору + для слияния массивов. А именно, она сливает массивы, перечисленные в ее аргументах, в оди большой массив и возвращает результат. Если в массивах встречаются одинаковые ключи, в результат помещается пара ключ=>значение из того массива, который расположен правее в списке аргументов. Однако это не затрагивает числовые ключи: элементы с такими ключами помещаются в конец результирующего массива в любом случае.
$L1=array(10,20,30);
$L2=array(100,200,300);
$L=array_merge($L1, $L2);
// теперь $L===array(10,20,30,100,200,300);
array_merge_recursive Объединение сложных массивов. Синтаксис : array array_merge_recursive(array arr1, array arr2 [, array ...]) Функция array_merge_recursive() сильно напоминает функцию array_merge() с тем дополнением, что она может работать с многомерными и древовидными массивами, а элементы с одинаковыми строковыми индексами превращаются в подмассивы. Для числовых индексов поведение функции аналогично array_merge().
$arr1 = array("color" => array("favorite" =>"red"), 5);
$arr2 = array(10, "color" => array("favorite" =>"green"), "blue");
$result = array_merge_recursive($arr1, $arr2);
// $result = array("color" => array (
// "favorite" => array("red", "green"),
// "blue"), 5, 10)