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 :: Замена тега в тексте

 PHP.SU

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


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

> Без описания
eri
Отправлено: 02 Августа, 2016 - 22:11:10
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Июнь 2016  


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




Привет. Подскажите, регулярку для замены в тексте допустим, каждого 3 тега p, на другой тег <blockquote>, а идеале конечно чтобы, рандомно менялся каждый 3, или 4, или 5 тег, но необязательно.
 
 Top
Fart
Отправлено: 02 Августа, 2016 - 22:25:12
Post Id



Посетитель


Покинул форум
Сообщений всего: 324
Дата рег-ции: Июль 2016  


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




Если не секрет, а зачем менять рандомно теги? И это обязательно на стороне сервера делать?
 
 Top
vintag
Отправлено: 03 Августа, 2016 - 17:11:20
Post Id



Новичок


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


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




Не думаю чтобы регулярки помогли, но делается довольно просто
 
 Top
eri
Отправлено: 03 Августа, 2016 - 20:01:36
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Июнь 2016  


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




Подскажи, как сделать проще?
 
 Top
vintag
Отправлено: 04 Августа, 2016 - 09:37:33
Post Id



Новичок


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


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




eri пишет:
Подскажи, как сделать проще?

самое простое это прописать требуемые элементы в другом элементе, элементах. Для этого подойдут таблицы в идеале. ид каждой ячейки должно соответствовать ид заменяемого элемента, например, b0 - c0, b1 -c1, b2-c2 и тд, где цифра есть переменная счетчик исмпользуемая при составлении страницы средствами пшп. таких цифр может быть так же две и более, не важно. Главное что мы делаем с этим всем потом уже явкойскриптом. А делаем мы просто, выбираем ид ячейки таблицы, b0, меняем первую буквсу на c и получается что мы уже обращаемся к элементу который надо сменить. Да льше присваиваем чемуто там содержимое тега, сам тег из ячейки удаляем и прописываем новый в ячейки с содержимым которое сохранили предварительно и ид.
<td id="b0"><p id="c0>содержимое</p></td>
Ну и думаю понятно как из этого каскадную сделать смену

(Отредактировано автором: 04 Августа, 2016 - 09:39:22)

 
 Top
Строитель Модератор
Отправлено: 04 Августа, 2016 - 12:24:44
Post Id



Участник


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


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




vintag пишет:
самое простое это прописать требуемые элементы в другом элементе, элементах.
Если я его правильно понял, он получает тег <p> динамически. Иначе зачем ему нужна была бы регулярка, если бы он мог переписать третий по счёту тег "ручками".
vintag пишет:
Для этого подойдут таблицы в идеале. ид каждой ячейки должно соответствовать ид заменяемого элемента
С таким же успехом можно было бы задать id для тега <p> .
 
 Top
Строитель Модератор
Отправлено: 04 Августа, 2016 - 16:39:47
Post Id



Участник


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


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




eri пишет:
Подскажите, регулярку для замены в тексте допустим, каждого 3 тега p, на другой тег <blockquote>
Одной регуляркой тут наверное не обойтись
PHP:
скопировать код в буфер обмена
  1. $str = '
  2.    <p>Тег1</p> Текст вне параграфа <p>Тег2</p><p>Тег3</p><p>Тег4</p><p>Тег5</p>
  3.    <p>Тег6</p><p>Тег7</p><p>Тег8</p><p>Тег9</p><p>Тег10</p>
  4. ';
  5. preg_match_all('~<p>[a-zа-я0-9\s]+</p>~ui', $str, $matches);
  6.  
  7. $out = '';
  8. foreach ($matches[0] as $key => $val) {
  9.     $out .= (++$key % 3 ? $val : '<blockquote>'. strip_tags($val) .'</blockquote>');
  10. }
  11.  
  12. echo $out;
  13.  

(Добавление)
eri пишет:
в идеале конечно чтобы, рандомно менялся каждый 3, или 4, или 5 тег
Вот так будет рандомно меняться каждый 3, или 4, или 5 тег
PHP:
скопировать код в буфер обмена
  1. $str = '
  2.    <p>Тег1</p> Текст вне параграфа <p>Тег2</p><p>Тег3</p><p>Тег4</p><p>Тег5</p>
  3.    <p>Тег6</p><p>Тег7</p><p>Тег8</p><p>Тег9</p><p>Тег10</p>
  4. ';
  5. preg_match_all('~<p>[a-zа-я0-9\s]+</p>~ui', $str, $matches);
  6.  
  7. $numb = mt_rand(3, 5);
  8.  
  9. $out = '';
  10. foreach ($matches[0] as $key => $val) {
  11.     $out .= (++$key % $numb ? $val : '<blockquote>'. strip_tags($val) .'</blockquote>');
  12. }
  13.  
  14. echo $out;
 
 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