За последние 24 часа нас посетили 62388 программистов и 1742 робота. Сейчас ищут 924 программиста ...

Как с помощью str_replace произвести замену на случайное слово из списка?

Тема в разделе "PHP для новичков", создана пользователем Yankovitz, 5 авг 2017.

  1. Yankovitz

    Yankovitz Активный пользователь

    С нами с:
    21 ноя 2014
    Сообщения:
    194
    Симпатии:
    6
    Добрый день. Вопрос в заголовке. Можно и не с помощью str_replace.
    То есть, у меня есть некий текст: [hello], меня зовут Леша.
    Как заменить [hello] на любое случайное слово из списка: привет, добрый день, добрый вечер
    Спасибо заранее.
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    тут не str_replace, а preg_replace_callback нужен
     
  3. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    Если все таки хочется str_replace :D
    PHP:
    1. $words = array("привет", "добрый день", "добрый вечер");
    2. str_replace("[hello]", $words[rand(0,count($words)-1)], $str);
    но так то лучше preg_replace_callback
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    artoodetoo нравится это.
  5. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    Збс :D Я не знал про такую функцию :D
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    в пхп много функций "на каждый день"
     
  7. Yankovitz

    Yankovitz Активный пользователь

    С нами с:
    21 ноя 2014
    Сообщения:
    194
    Симпатии:
    6
    Спасибо всем, кто ответил. А как компактно описать замену, если необходимо заменить целый массив слов?
    Предложение: [hello], [my-name] [name]
    [hello] - привет, добрый день
    [my-name] - меня зовут, моё имя
    [name] - Леша, Катя, Фёкла
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Ну почему, сцуко, никто не читает справку по функции?!

    http://php.net/str_replace

    --- Добавлено ---
    За один вызов функции можешь заменить сразу много слов. Только массивы подготовь.