Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Заменить каждый 20тый пробел на слово

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
alexko64
Отправлено: 19 Апреля, 2019 - 00:45:20
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Окт. 2018  


Помог: 0 раз(а)




Доброй ночи
Вот такая конструкциа заменяет каждый пробел на ключевое слово
$final_text = str_replace (" ", " $keyword", $text);

А как заменить каждый 20тый, 40вой, 60тый и так далле пробел на $keyword?
Тоисть через каждые 20 пробелов

(Отредактировано автором: 19 Апреля, 2019 - 00:49:52)

 
 Top
Vladimir Kheifets
Отправлено: 19 Апреля, 2019 - 08:09:19
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




alexko64 пишет:
Доброй ночи
Вот такая конструкциа заменяет каждый пробел на ключевое слово
$final_text = str_replace (" ", " $keyword", $text);

А как заменить каждый 20тый, 40вой, 60тый и так далле пробел на $keyword?
Тоисть через каждые 20 пробелов


Добрый день!
Написал функцию SpecialStrReplace
Спойлер (Отобразить)

Удачи!
 
 Top
Строитель
Отправлено: 19 Апреля, 2019 - 10:48:08
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




Vladimir Kheifets, ох и вéлик же у вас! Радость
(Добавление)
alexko64, тут на помощь придут регулярные выражения:
PHP:
скопировать код в буфер обмена
  1. $text = '1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 42';
  2. $keyword = 'keyword';
  3.  
  4. $text = preg_replace('~(?:\S+\s){20}\K~', "$keyword ", $text);
  5. echo $text;
  6. /* Результат:
  7. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 keyword 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 keyword 42
  8. */

Демо

(Отредактировано автором: 19 Апреля, 2019 - 14:51:03)

 
 Top
LIME
Отправлено: 19 Апреля, 2019 - 13:47:45
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Строитель Здорово
 
 Top
alexko64
Отправлено: 19 Апреля, 2019 - 13:55:39
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Окт. 2018  


Помог: 0 раз(а)




[quote=Строитель][/quote]
Отлично, то что надо. Спасибо
 
 Top
Vladimir Kheifets
Отправлено: 19 Апреля, 2019 - 14:23:53
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




Строитель пишет:
Vladimir Kheifets, ох и велик же у вас!

Ваше решение лучше!
Но для случая, когда в строке только пробелы(это возможно), как в моём примере, Ваше решение не работает.
Кроме того в моём примере предусмотрен массив $keywords для замены.
Проверил, что произойдёт если немного изменить тестовую строку:
Цитата:

Ваша тестовая строка:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 42
Результ:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 keyword 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 keyword 42

После 17 добавил табуляцию:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 42
Результ:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 keyword 38 40 41 42

(Отредактировано автором: 20 Апреля, 2019 - 13:56:14)

 
 Top
Строитель
Отправлено: 19 Апреля, 2019 - 14:49:54
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)





LIME Закатив глазки
 
 Top
alexko64
Отправлено: 14 Мая, 2019 - 21:19:22
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Окт. 2018  


Помог: 0 раз(а)




Строитель пишет:
Vladimir Kheifets, ох и вéлик же у вас! Радость
(Добавление)
alexko64, тут на помощь придут регулярные выражения:
PHP:
скопировать код в буфер обмена
  1. $text = '1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 42';
  2. $keyword = 'keyword';
  3.  
  4. $text = preg_replace('~(?:\S+\s){20}\K~', "$keyword ", $text);
  5. echo $text;
  6. /* Результат:
  7. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 keyword 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 keyword 42
  8. */

Демо

Этот вариант работает отлично. Хочу попросить ещё разок подсобит .
Что изменить что-бы слово в текст вставлялось не через каждые 20 пробелов на протяжении всего текста, а только один раз через первые 20 пробелов?
Спасибо и сорри что пристал с вопросами
 
 Top
Строитель
Отправлено: 14 Мая, 2019 - 21:54:43
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




alexko64, добавьте через запятую в preg_replace() ещё один аргумент 1 (единицу).
 
 Top
Строитель
Отправлено: 15 Мая, 2019 - 08:20:41
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




PHP:
скопировать код в буфер обмена
  1. $text = '1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 42';
  2. $keyword = 'keyword';
  3.  
  4. $text = preg_replace('~(?:\S+(\s)){20}\K~', "$keyword\$1", $text, 1);
  5. echo $text;

(Отредактировано автором: 15 Мая, 2019 - 09:09:19)

 
 Top
alexko64
Отправлено: 15 Мая, 2019 - 13:46:17
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Окт. 2018  


Помог: 0 раз(а)




Спасибо огромное
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB