Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.04.2012, 01:43
Профессор
Отправить личное сообщение для kilogram Посмотреть профиль Найти все сообщения от kilogram
 
Регистрация: 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);
?>
Ответить с цитированием
  #2 (permalink)  
Старый 11.04.2012, 04:34
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 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.
Ответить с цитированием
  #3 (permalink)  
Старый 12.04.2012, 16:13
Профессор
Отправить личное сообщение для kilogram Посмотреть профиль Найти все сообщения от kilogram
 
Регистрация: 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.
Ответить с цитированием
  #4 (permalink)  
Старый 12.04.2012, 16:17
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

kilogram,
шаблонизатор, видимо, какой-нибудь используется.
Ответить с цитированием
  #5 (permalink)  
Старый 12.04.2012, 17:48
Профессор
Отправить личное сообщение для kilogram Посмотреть профиль Найти все сообщения от kilogram
 
Регистрация: 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.
Ответить с цитированием
  #6 (permalink)  
Старый 12.04.2012, 18:15
Профессор
Отправить личное сообщение для kilogram Посмотреть профиль Найти все сообщения от kilogram
 
Регистрация: 19.03.2012
Сообщений: 163

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

$t = array("Петя","Вася");
$m = array("Дуся","Муся");
echo str_replace($t,$m,"{$t[0]}{$t[1]}");
Ответить с цитированием
  #7 (permalink)  
Старый 12.04.2012, 19:32
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 04.12.2009
Сообщений: 579

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск