11.04.2012, 01:43
|
Профессор
|
|
Регистрация: 19.03.2012
Сообщений: 163
|
|
str_replace и substr_replace
str_replace и substr_replace В чем разница?
Оба зменяют одну строку другой. Чем лучше та или иная функция?
А в чем же различие?
Код:
|
<?php
$text = "<br>Ну, ты чувак гонишь!";
echo substr_replace($text,'молодец',17,6);
echo str_replace("гонишь",'молодец',$text);
?> |
|
|
11.04.2012, 04:34
|
|
Профессор
|
|
Регистрация: 04.12.2009
Сообщений: 579
|
|
разница большая:
1.
str_replace заменяет исключительно заданные подстроки (один набор символов заменить на другой)
substr_replace заменяет отрезок строки (не важно, какие там символы, важна длина) на подстроку.
2.
str_replace заменяет все имеющиеся совпадения (будет 10 совпадений — замена произойдет 10 раз), плюс к этому можно жестко задать количество замен (по-моему, только с пятой версии)
substr_replace заменяет подстроку только один раз
3.
str_replace может работать с массивами
substr_replace — не может
__________________
С моих слов записано верно.
Последний раз редактировалось T-sh, 11.04.2012 в 04:43.
|
|
12.04.2012, 16:13
|
Профессор
|
|
Регистрация: 19.03.2012
Сообщений: 163
|
|
СКажите, а зачем здесь нужны в описании массива внутри каждый элемент отделять {}
Код:
|
<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:16.
|
|
12.04.2012, 16:17
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
kilogram,
шаблонизатор, видимо, какой-нибудь используется.
|
|
12.04.2012, 17:48
|
Профессор
|
|
Регистрация: 19.03.2012
Сообщений: 163
|
|
В документации написано так:
Код:
|
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:59.
|
|
12.04.2012, 18:15
|
Профессор
|
|
Регистрация: 19.03.2012
Сообщений: 163
|
|
Попробовал свой пример написать, получается если я хочу найти массив и заменить на массив,как такое же происходило в примере выше, про который я прочитал в книге и спросил выше, мне нужно каждый элемент выписывать в фигурных скобках с индексами?
$t = array("Петя","Вася");
$m = array("Дуся","Муся");
echo str_replace($t,$m,"{$t[0]}{$t[1]}");
|
|
12.04.2012, 19:32
|
|
Профессор
|
|
Регистрация: 04.12.2009
Сообщений: 579
|
|
фигурные скобки используются для того, чтобы при поиске/замене без учета регистра, не заменились теги.
__________________
С моих слов записано верно.
|
|
|
|