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
Форумы портала PHP.SU :: Версия для печати :: Регулярное выражение для обработки ссылок
Форумы портала PHP.SU » » Вопросы новичков » Регулярное выражение для обработки ссылок

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

1. maks_77 - 19 Марта, 2015 - 03:14:14 - перейти к сообщению
Имеется ссылка с определенным классом 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>


Помогите пожалуйста составить регулярное выражение для этого.
2. GoDr - 19 Марта, 2015 - 08:00:45 - перейти к сообщению
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. */
3. Sail - 19 Марта, 2015 - 08:13:46 - перейти к сообщению
GoDr, уточните, пожалуйста, учли ли Вы пожелание: "...однако классов может быть и больше, но constant будет всегда"?
(Добавление)
То есть, "условие" Улыбка
4. GoDr - 19 Марта, 2015 - 09:02:32 - перейти к сообщению
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. */
5. maks_77 - 19 Марта, 2015 - 19:13:17 - перейти к сообщению
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


вот это вызывает затруднения
6. GoDr - 20 Марта, 2015 - 06:58:41 - перейти к сообщению
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>
7. maks_77 - 22 Марта, 2015 - 18:06:46 - перейти к сообщению
GoDr пишет:

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


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

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

Спасибо.

 

Powered by ExBB FM 1.0 RC1