|
|
|
| СКажите, а зачем здесь нужны в описании массива внутри каждый элемент отделять {}
<html><body>
<?php
$from = array("{TITLE}","{BODY}");
$to = array("Философия","Учат в школе, учат в школе!");
echo str_replace($from,$to, "<title>{TITLE}</title><body>{BODY}</body>");
?>
</body></html>
|
Как работает эта строка?
echo str_replace($from,$to, "<title>{TITLE}</title><body>{BODY}</body>");
|
2 'элемента массива $from заменяются на 2 элемента массива $to? 3-ий параметр не ясно как работает в данном коде | |
|
|
|
|
|
|
|
для: kilogram
(12.04.2012 в 16:33)
| | третий параметр это строка в которой и происходит замена | |
|
|
|
|
|
|
|
для: kilogram
(12.04.2012 в 16:33)
| | В данном случае можно выбросить эти фигурные скобки. Просто используют их тут в качестве маркеров.
А замена не просто двух элементов, а каждого элемента массива для поиска, на каждый соответствующий элемент массива замены. | |
|
|
|
|
|
|
|
для: kilogram
(12.04.2012 в 16:33)
| | фигурные скобки дают команду интерпритатору воспринимать заключенный в них элемент как переменную, в данном случае как константу
В этом контексте все вхождения from в строку (третий аргумент функции) заменяются значениями to. | |
|
|
|
|
|
|
|
для: Jackson
(12.04.2012 в 17:15)
| | В документации написано так:
search
Искомое значение, также известное как needle (иголка). Для множества искомых значений можно использовать массив.
replace
Значение замены, будет использовано для замены искомых значений search. Для множества значений можно использовать массив.
subject
Строка или массив, в котором производится поиск и замена, также известный как haystack (стог сена).
Если subject является массивом, то поиск с заменой будет осуществляться над каждым элементом subject, а результатом функции также будет являться массив.
|
Получается такой расклад?
1 параметр - $from - поиск- искомый элемент
2 параметр- $to - поиск - заменяемый элемент
3 параметр- а в третем парметре сама замена происходит?
В 3 параметре TITLE - это название первого массива $from который заменится на его второй элемент массива from на BODY?
"<title>{TITLE}</title><body>{BODY}</body>"); | |
|
|
|
|
|
|
|
для: kilogram
(12.04.2012 в 17:47)
| | все верно. Вот только с массивами для меня была новость - применял только для строк.
А про фигурные скобки имейте ввиду - полезная вещь при подставлении значения, например, элемента двумерного массива $str = "{$mas[0][0]<br>}"; | |
|
|
|
|
|
|
|
для: kilogram
(12.04.2012 в 17:47)
| | Попробовал свой пример написать, получается если я хочу найти массив и заменить на массив,как такое же происходило в примере выше, про который я прочитал в книге и спросил выше, мне нужно каждый элемент выписывать в фигурных скобках с индексами?
$t = array("Петя","Вася");
$m = array("Дуся","Муся");
echo str_replace($t,$m,"{$t[0]}{$t[1]}");
|
| |
|
|
|
|
|
|
|
для: kilogram
(12.04.2012 в 18:17)
| | в данном контексте это не обязательно - интерпретатор воспринимает в строке символ начала переменной "$" и считает переменной всю оставшуюся часть строчки переменной, до встречи следующего признака начала переменной - выходит тут первая переменная заканчивается четко перед началом второй и после второй нет ничего, что могло б "сбить с толку" интерпретатор.
несколько примеров
$t = "Hi";
echo "$tmr.kg"; // выведет ".kg", т.к. не "видно" конца переменной t, а переменная $tmr не инициализирована
echo "$t mr.kg"; // выведет "Hi mr.kg", т.к. тут переменная отделена от остальной части строки пробелом
echo "{$t}mr.kg"; // а тут границы переменной устанавливаются фигурными скобками - вывод "Himr.kg"
echo "tt$ttt"; // на выходе tt, т.к. переменная $ttt не инициализирована
echo "tt{$t}tt"; // выводит "ttHitt" - опять работает подсказка из фигурных скобок
|
| |
|
|
|
|
|
|
|
для: Jackson
(12.04.2012 в 17:15)
| | да и без фигурных скобок замена отлично будет произведена - фигурные скобки, в данном случае, делают уникальным сочетание символов и читабельным шаблон. | |
|
|
|