Замена указанное кол-во раз

Статус
В этой теме нельзя размещать новые ответы.

karapet

Постоялец
Регистрация
9 Сен 2008
Сообщения
169
Реакции
105
Есть какаянить функция или простой класс для замены в сроке нужной подстроки определенное количество раз? Если просто делать через:
PHP:
$str = 'Вчера была хорошая погода. И сегодня кстати тоже хорошая погода.';
$str = str_replace('хорошая', 'хреновая', $str);

# Выводит не то что нужно. Мне же надо получить такую строку:
$str = 'Вчера была хреновая погода. И сегодня кстати тоже хорошая погода.';
вопрос: как это сделать проще всего?
 
preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])
Выполняет поиск в строке subject совпадений с шаблоном pattern и заменяет их на replacement. В случае, если параметр limit указан, будет произведена замена limit вхождений шаблона; в случае, если limit опущен либо равняется -1, будут заменены все вхождения шаблона.
 
preg_match в данном случае лучше не использовать. Об этом сказано в документации. Попробуйте данный код:

PHP:
$str = 'Вчера была хорошая погода. И сегодня кстати тоже хорошая погода.';
$s = str_replace('хорошая','плохая',$str);
echo $s;

ваш код кстати тоже работает
 
Есть какаянить функция или простой класс для замены в сроке нужной подстроки определенное количество раз? Если просто делать через:
PHP:
$str = 'Вчера была хорошая погода. И сегодня кстати тоже хорошая погода.';
$str = str_replace('хорошая', 'хреновая', $str);
# Выводит не то что нужно. Мне же надо получить такую строку:
$str = 'Вчера была хреновая погода. И сегодня кстати тоже хорошая погода.';
вопрос: как это сделать проще всего?
PHP:
<?php
$str = 'Вчера была хорошая погода. И сегодня кстати тоже хорошая погода.';
echo preg_replace('/хорошая/','плохая',$str, 1);
?>
 
preg_match в данном случае лучше не использовать. Об этом сказано в документации. Попробуйте данный код:
PHP:
$str = 'Вчера была хорошая погода. И сегодня кстати тоже хорошая погода.';
$s = str_replace('хорошая','плохая',$str);
echo $s;
ваш код кстати тоже работает

я знаю что мой код работает, но не так как надо. перечитайте что мне нужно было...

всем спасибо, топик клозет
 
Регулярками - из пушки по воробьям. Можно проще:
PHP:
str_replace('хорошая','плохая',$str[, int &$count ]);
 
Регулярками - из пушки по воробьям. Можно проще:
PHP:
str_replace('хорошая','плохая',$str[, int &$count ]);
ты сам то понял что написал и что за переменная $count?:D
&$count возвращает по ссылке количество произведенных замен, а заменяться будут по-любому все вхождения подстроки. Прежде чем ересь писать, почитай "пхп для чайников" хотя бы ;)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху