Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   str_replace и substr_replace (https://javascript.ru/forum/server/27369-str_replace-i-substr_replace.html)

kilogram 11.04.2012 01:43

str_replace и substr_replace
 
str_replace и substr_replace В чем разница?

Оба зменяют одну строку другой. Чем лучше та или иная функция?
А в чем же различие?

Код:

<?php
$text = "<br>Ну, ты чувак гонишь!";
echo substr_replace($text,'молодец',17,6);
echo str_replace("гонишь",'молодец',$text);
?>


T-sh 11.04.2012 04:34

разница большая:

1.
str_replace заменяет исключительно заданные подстроки (один набор символов заменить на другой)
substr_replace заменяет отрезок строки (не важно, какие там символы, важна длина) на подстроку.

2.
str_replace заменяет все имеющиеся совпадения (будет 10 совпадений — замена произойдет 10 раз), плюс к этому можно жестко задать количество замен (по-моему, только с пятой версии)
substr_replace заменяет подстроку только один раз

3.
str_replace может работать с массивами
substr_replace — не может :)

kilogram 12.04.2012 16:13

СКажите, а зачем здесь нужны в описании массива внутри каждый элемент отделять {}

Код:

<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-ий параметр не ясно как работает в данном коде

Kolyaj 12.04.2012 16:17

kilogram,
шаблонизатор, видимо, какой-нибудь используется.

kilogram 12.04.2012 17:48

В документации написано так:
Код:

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 18:15

Попробовал свой пример написать, получается если я хочу найти массив и заменить на массив,как такое же происходило в примере выше, про который я прочитал в книге и спросил выше, мне нужно каждый элемент выписывать в фигурных скобках с индексами?

$t = array("Петя","Вася");
$m = array("Дуся","Муся");
echo str_replace($t,$m,"{$t[0]}{$t[1]}");

T-sh 12.04.2012 19:32

фигурные скобки используются для того, чтобы при поиске/замене без учета регистра, не заменились теги.


Часовой пояс GMT +3, время: 10:10.