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]   

> Без описания
maks_77
Отправлено: 19 Марта, 2015 - 03:14:14
Post Id


Новичок


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


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




Имеется ссылка с определенным классом constant, однако классов может быть и больше, но constant будет всегда, но обрабатывать надо только ссылки имеющие среди классов класс constant, т.к не все ссылки имеют этот класс.
CODE (html):
скопировать код в буфер обмена
  1. <a class="constant" href="attr-href">attr-ankor</a>

надо изменить добавив %массив атрибутов% и приставку к урл атрибута href
CODE (html):
скопировать код в буфер обмена
  1. <a class="constant" %массив атрибутов% href="%приставка к url%attr-href">attr-ankor</a>


Помогите пожалуйста составить регулярное выражение для этого.
 
 Top
GoDr
Отправлено: 19 Марта, 2015 - 08:00:45
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


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




PHP:
скопировать код в буфер обмена
  1. $array = array('title="QQQ"', 'data-int="11"');
  2.  
  3. $str = <<<EOF
  4. <a class="constant" href="attr-href">attr-ankor 1</a>
  5. <a class="constant" href="attr-href">attr-ankor 2</a>
  6. <a class="constant" href="attr-href">attr-ankor 3</a>
  7. EOF;
  8.  
  9. $result = preg_replace('#(<a\s+class="constant")#si', "$1 " . implode(' ', $array), $str);
  10.  
  11. echo $result;
  12.  
  13. /*
  14. <a class="constant" title="QQQ" data-int="11" href="attr-href">attr-ankor 1</a>
  15. <a class="constant" title="QQQ" data-int="11" href="attr-href">attr-ankor 2</a>
  16. <a class="constant" title="QQQ" data-int="11" href="attr-href">attr-ankor 3</a>
  17. */


-----
Система управления веб-содержимым Lotos CMS
 
 Top
Sail
Отправлено: 19 Марта, 2015 - 08:13:46
Post Id



Участник


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


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




GoDr, уточните, пожалуйста, учли ли Вы пожелание: "...однако классов может быть и больше, но constant будет всегда"?
(Добавление)
То есть, "условие" Улыбка
 
 Top
GoDr
Отправлено: 19 Марта, 2015 - 09:02:32
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


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




Sail, а ты сам не видишь? Радость
PHP:
скопировать код в буфер обмена
  1. $array = array('title="QQQ"', 'data-int="11"');
  2.  
  3. $str = <<<EOF
  4. <a class="constant" href="attr-href">attr-ankor 1</a>
  5. <a class=" constant" href="attr-href">attr-ankor 1</a>
  6. <a class="class1 constant" href="attr-href">attr-ankor 2</a>
  7. <a class="constant class2" href="attr-href">attr-ankor 3</a>
  8. EOF;
  9.  
  10. $result = preg_replace('#(<a.*?class=".*?\s?constant\s?.*?")#si', "$1 " . implode(' ', $array), $str);
  11.  
  12. echo $result;
  13.  
  14. /*
  15. <a class="constant" title="QQQ" data-int="11" href="attr-href">attr-ankor 1</a>
  16. <a class=" constant" title="QQQ" data-int="11" href="attr-href">attr-ankor 1</a>
  17. <a class="class1 constant" title="QQQ" data-int="11" href="attr-href">attr-ankor 2</a>
  18. <a class="constant class2" title="QQQ" data-int="11" href="attr-href">attr-ankor 3</a>
  19. */


-----
Система управления веб-содержимым Lotos CMS
 
 Top
maks_77
Отправлено: 19 Марта, 2015 - 19:13:17
Post Id


Новичок


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


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




GoDr пишет:
Sail
PHP:
скопировать код в буфер обмена
  1.  
  2. $result = preg_replace('#(<a.*?class=".*?\s?constant\s?.*?")#si', "$1 " . implode(' ', $array), $str);
  3.  


спасибо, такое я накропать сумел, единственное, что регулярка у меня слегка универсальнее
PHP:
скопировать код в буфер обмена
  1. /<a.*?class=("|').*?constant.*?('|")/

однако есть вторая часть и
Цитата:
приставку к урл атрибута href


вот это вызывает затруднения

(Отредактировано автором: 19 Марта, 2015 - 19:22:25)

 
 Top
GoDr
Отправлено: 20 Марта, 2015 - 06:58:41
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


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




maks_77 пишет:
спасибо, такое я накропать сумел, единственное, что регулярка у меня слегка универсальнее
это не у тебя универсальнее, это я упростил Радость
ещё некоторые делают так
CODE (html):
скопировать код в буфер обмена
  1. <a class=constant href="attr-href">attr-ankor</a>


maks_77 пишет:
однако есть вторая часть и
в чём проблема? сделай по аналогии, но второй регуляркой
(Добавление)
maks_77 и кстати, твоя регулярка не правильная. Как насчёт такого к примеру
CODE (html):
скопировать код в буфер обмена
  1. <a class="constantxxx" href="attr-href">attr-ankor 1</a>


-----
Система управления веб-содержимым Lotos CMS
 
 Top
maks_77
Отправлено: 22 Марта, 2015 - 18:06:46
Post Id


Новичок


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


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




GoDr пишет:

maks_77 и кстати, твоя регулярка не правильная. Как насчёт такого к примеру
CODE (html):
скопировать код в буфер обмена
  1. <a class="constantxxx" href="attr-href">attr-ankor 1</a>


Да) с этим уже столкнулся.

ну и в итоге таки да сделал двумя заменами

Спасибо.
 
 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