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

Тема в разделе "PHP", создана пользователем karapet, 28 ноя 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. karapet

    karapet

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

    # Выводит не то что нужно. Мне же надо получить такую строку:
    $str 'Вчера была хреновая погода. И сегодня кстати тоже хорошая погода.';
    вопрос: как это сделать проще всего?
     
  2. kpromo

    kpromo Постоялец

    Регистр.:
    8 май 2010
    Сообщения:
    123
    Симпатии:
    14
    preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])
    Выполняет поиск в строке subject совпадений с шаблоном pattern и заменяет их на replacement. В случае, если параметр limit указан, будет произведена замена limit вхождений шаблона; в случае, если limit опущен либо равняется -1, будут заменены все вхождения шаблона.
     
    karapet нравится это.
  3. Phrack

    Phrack

    Регистр.:
    3 ноя 2010
    Сообщения:
    264
    Симпатии:
    38
    preg_match в данном случае лучше не использовать. Об этом сказано в документации. Попробуйте данный код:

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

    VandJ

    Регистр.:
    8 апр 2008
    Сообщения:
    319
    Симпатии:
    124
    PHP:
    <?php
    $str 
    'Вчера была хорошая погода. И сегодня кстати тоже хорошая погода.';
    echo 
    preg_replace('/хорошая/','плохая',$str1);
    ?> 
     
  5. karapet

    karapet

    Регистр.:
    9 сен 2008
    Сообщения:
    168
    Симпатии:
    104
    я знаю что мой код работает, но не так как надо. перечитайте что мне нужно было...

    всем спасибо, топик клозет
     
  6. propovednik

    propovednik Постоялец

    Регистр.:
    16 май 2008
    Сообщения:
    104
    Симпатии:
    21
    Регулярками - из пушки по воробьям. Можно проще:
    PHP:
    str_replace('хорошая','плохая',$str[, int &$count ]); 
     
  7. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    ты сам то понял что написал и что за переменная $count?:D
    &$count возвращает по ссылке количество произведенных замен, а заменяться будут по-любому все вхождения подстроки. Прежде чем ересь писать, почитай "пхп для чайников" хотя бы ;)
     
Статус темы:
Закрыта.