проблема с str_replace

raisa05

Новичок
проблема с str_replace

Возникла необходимость в тексте заменить слово - Сайт на Страничка

использую функцию str_replace

примерно так:
PHP:
$text= str_replace($slovo, $zamena, $moytext);
НО получается так, что скрипт если находит слово:
Сайтов
то заменяет вот так:
Страникаов
тоесть мне нужно чтобы он только менял слово САЙТ а слово САЙТОВ не трогал
А тут получается что он видит сайт в слове сайтов и заменяет его.

Скажите как реализовать чтобы менял только целое слово.

Я придумала может вставить как то в начало и в конец пробел чтобы он при замене менял только слово САЙТ так как оно будет иметь пробел в начале и в конце.
Но все равно не понимаю как это сделать.

Подскажите кто сталкивался с такой проблемой, буду очень признательна.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
raisa05
[m]str_replace[/m]
 

Pingvin22

Новичок
PHP:
$str="Сайт Сайтов";

$str=preg_replace("/Сайт(?=\s)/i","Страничка",$str);
echo $str;
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
PHP:
$search = Array (' САЙТ ', ' САЙТ. ');
$replace = Array (' Страничка ', ' Страничка. ');
str_replace($search, $replace, $text);
 

raisa05

Новичок
Mr_Max

Скажи а как пробел поставить если у меня не слово а функция $slovo
тоесть не "САЙТ " а получается "$slovo " но так ведь не будет работь
 

raisa05

Новичок
Автор оригинала: Pingvin22
точнее так лучше
PHP:
$str=preg_replace("/Сайт(?!\w)/i","Страничка",$str);
Так у меня слово в функции
$slovo

Так будет работать?
PHP:
$str=preg_replace("/.$slovo.(?!\w)/i","Страничка",$str);
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
raisa05
Не стоит использовать [m]preg_replace[/m] в тех случаях, когда Вы можете обойтись обычным [m]str_replace[/m]




-~{}~ 10.06.07 01:43:

raisa05
Скажи а как пробел поставить если у меня не слово а функция $slovo
тоесть не "САЙТ " а получается "$slovo " но так ведь не будет работь
Потрудитесь, пожалуйста, сходить по ссылкам, и почитать соотвествующие страницы документации.
А именно цитирую
С версии PHP 4.0.5, любой аргумент str_replace() может быть массивом.

То-есть в Вашем случае это
$slovo = Array (' САЙТ ', ' САЙТ. ');
$zamena = Array (' Страничка ', ' Страничка. ');
$text= str_replace($slovo, $zamena, $moytext);

На этом цитированние мануала прекращаем.
 

raisa05

Новичок
Да спасибо я разобралась.
На Локалхосте все работает как надо.
Когда заливаю скрипт на сервер он почему-то опять меняет все слова не видя пробелов в конце слова.
Т.е.
$slovo ="сайт";
$probel=" ";
$text= str_replace($slovo.$probel, $zamena, $moytext);
На локалхосте прекрасно работает. Т.е. меняет слово только с пробелом в конце. А заливаю на сервер опять меняет без пробела =(

Сразу скажу что писать слова с пробелами мне не подходит.
Т.е. $slovo ="сайт "; - не подойдет. Нужно именно как то придумать вставлять пробел в конец каждого слова.
Я впринципе придумала и на локал хосте все работает а на сервере нет =( причем пробовала на разных серверах.
 

Андрейка

Senior pomidor developer
raisa05

Так будет работать?
$str=preg_replace("/.$slovo.(?!\w)/i","Страничка",$str);

скажите пожалста на кой вы поставили точки когда в написанном за вас коде их небыло?
 

cDLEON

Онанист РНРСlub
Mr_Max
В str_replace, кстати, есть переполнение памяти.
По крайней мере в 4-ом ПЫХЫПЫ.
 

Фанат

oncle terrible
Команда форума
"$slovo " но так ведь не будет работь
будет.
пробовала на разных серверах.
это значт, что ты пробовала на разных серверах НЕ ТОТ код, который у тебя здесь написан.
Убедись, что этот код написан не "здесь для примера и ничем принципиальным не отличается", а запускается на другом сервере именно этот, скопированный один-в один.
 
Сверху