LINUX.ORG.RU

пых мультиреплейс

 


0

1
$newdescription = '... хонда как и индия с харлейем ...';

$content 'хонда^кросс^спорт^дорожник;
индия^ямаха^китай;
харлей^лиаз^порше;';

$findsin = explode(';', $content);
$keys = array();
$sinonims   = array();
$i = 0;
for ($i = 0; $i < count($findsin)-1; $i++) {
array_push($keys, explode('^', $findsin[$i])[0]);
array_push($sinonims, explode('^', $findsin[$i])[rand(1, count(explode('^', $findsin[$i]))-1)]);
}
$newdescription = str_ireplace($keys, $sinonims, $newdescription);

Не работает, заменяет какое-то одно слово в строке, а должен все...



Последнее исправление: shiva (всего исправлений: 6)

$findsin = explode(‘;’, $sinonims);

Тут sinonims не определена.

$newdescription = $description;

Что такое дескрипшн?

$i = 0;

Зачем?

Не работает, заменяет какое-то одно слово в строке, а должен все…

Опишите, что вам нужно?

fernandos ★★★
()
Ответ на: комментарий от fernandos

Пардон месье, исправил) Нужно в одной полученной по гет запросу строке заменить несколько РАЗНЫХ слов, на слова взятые из списков РАНДОМНО.

shiva
() автор топика

В целом задача полностью такова:

  1. Получаем некую строку

  2. Ищем в ней слова из списка Слов

  3. Заменяем эти разные слова на слова из списка Замен

shiva
() автор топика
Последнее исправление: shiva (всего исправлений: 1)
Ответ на: комментарий от shiva

У вас после контента нет знака равно, вы вообще пробовали код запускать?

Если я вас правильно понял, то вам нужно что-то типа

http://sandbox.onlinephpfunctions.com/code/1f18a8fefe5bbd0ab98a6e3880d76778cabc6b63

. Листайте вывод вниз, там выхлоп вардампов.

fernandos ★★★
()

В общем, проблема в том, что str_ireplace с массивами отказывается работать, допустим str_ireplace($search_arr, $change_arr, $changed_str); заменит только одно слово, а не все из массива $search_arr.

shiva
() автор топика
Ответ на: комментарий от fernandos

Любезнейший, простите милостиво, право слова, пишу в нервеньи, ошибаюсь, в продакте ошибок таких нет конечно, но выложить его не могу. Исправный код таков:

$newdescription = ‘… хонда как и индия с харлейем …’;
$content = ‘хонда^кросс^спорт^дорожник;индия^ямаха^китай;харлей^лиаз^порше;’;
$findsin = explode(‘;’, $content);
$keys = array();
$sinonims = array();
$i = 0;
for ($i = 0;
$i < count($findsin)-1; $i++) {
array_push($keys, explode(‘^’, $findsin[$i])[0]);
array_push($sinonims, explode(‘^’, $findsin[$i])[rand(1, count(explode(‘^’, $findsin[$i]))-1)]);
}
$newdescription = str_ireplace($keys,$sinonims,$newdescription);
shiva
() автор топика
Ответ на: комментарий от shiva

По ссылке, которую кинул я, заменил ... хонда как и индия с харлейем ... на ... спорт как и ямаха с лиазем ..., что не так?

fernandos ★★★
()
Ответ на: комментарий от shiva

заменить несколько РАЗНЫХ слов, на слова взятые из списков РАНДОМНО

Дорвей чтоли? Или бот комментариев? Бросай ты это муру, а то так и будешь писать говно в прямом и переносном смысле.

no-such-file ★★★★★
()
Ответ на: комментарий от shiva

Да нет, РНР работает правильно. Просто вы понавставляли символов перевода каретки (энтер зачем нажимали?), вот он и не видит слова.

http://sandbox.onlinephpfunctions.com/code/e1aa1bf03e6c69ff4e66f790a62080a683c136fa

fernandos ★★★
()
Последнее исправление: fernandos (всего исправлений: 1)
Ответ на: комментарий от fernandos

Пля, точно, благородный сер, спасибо вам, про трим запамятовал)

shiva
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.