За последние 24 часа нас посетили 4712 программистов и 480 роботов. Сейчас ищут 99 программистов ...

Присвоение класса ссылке

Тема в разделе "HTML и CSS", создана пользователем Yankovitz, 14 сен 2018.

  1. Yankovitz

    Yankovitz Активный пользователь

    С нами с:
    21 ноя 2014
    Сообщения:
    135
    Симпатии:
    6
    Есть данные в виде string:
    HTML:
    1. <div class="download rad-3 pad-20 mbt-48">
    2. <p><a href="wp-content/uploads/2018/06/road.jpg">Учебник</a></p>
    3. <p><a href="wp-content/uploads/2018/06/road.png">1000 слов</a></p>
    4. </div>
    Нужно получить расширение ссылки и присвоить ссылке соответствующий класс. Должно выглядеть так:
    HTML:
    1. <div class="download rad-3 pad-20 mbt-48">
    2. <p><a class="jpg" href="wp-content/uploads/2018/06/road.jpg">Учебник</a></p>
    3. <p><a class="png" href="wp-content/uploads/2018/06/road.png">1000 слов</a></p>
    4. </div>
    Прошу помощи.
     
  2. miketomlin

    miketomlin Активный пользователь

    С нами с:
    9 авг 2016
    Сообщения:
    746
    Симпатии:
    110
    Берите расширение и, если оно есть в предопределенном списке классов, добавляйте соотв. класс. В чем конкретно проблема?
     
  3. Yankovitz

    Yankovitz Активный пользователь

    С нами с:
    21 ноя 2014
    Сообщения:
    135
    Симпатии:
    6
    В том, как получить расширение и добавить класс ссылке
     
  4. Sail

    Sail Активный пользователь

    С нами с:
    1 ноя 2016
    Сообщения:
    708
    Симпатии:
    153
    @Yankovitz, задачка в том, чтобы в имеющемся файле исходный код поправить, или налету при формировании страницы внести изменения, или уже у клиента в браузере, посредством js после загрузки страницы?
     
  5. Yankovitz

    Yankovitz Активный пользователь

    С нами с:
    21 ноя 2014
    Сообщения:
    135
    Симпатии:
    6
    Да средствами php на лету.
     
  6. Valick

    Valick Новичок

    С нами с:
    12 авг 2018
    Сообщения:
    219
    Симпатии:
    41
    Очередная тема "дайте код"
     
  7. miketomlin

    miketomlin Активный пользователь

    С нами с:
    9 авг 2016
    Сообщения:
    746
    Симпатии:
    110
    Не, ТС опытный. Должен знать, что для этого есть «Сделайте за меня» и «Фриланс» :)
    --- Добавлено ---
    Хотя «авось прокатит на халяву» никто не отменял :D
     
  8. Yankovitz

    Yankovitz Активный пользователь

    С нами с:
    21 ноя 2014
    Сообщения:
    135
    Симпатии:
    6
    Я не прошу за меня написать код. Я лишь прошу направления. Что лучше использовать: регулярки или есть лучшая альтернатива?
     
  9. miketomlin

    miketomlin Активный пользователь

    С нами с:
    9 авг 2016
    Сообщения:
    746
    Симпатии:
    110
    Есть масса способов получить расширение: substr, explode, pathinfo и т.п.
     
  10. Valick

    Valick Новичок

    С нами с:
    12 авг 2018
    Сообщения:
    219
    Симпатии:
    41
    @Yankovitz, ты запостил html и говоришь, что надо php на лету. Яснопонятно, что ты даже рядом не отдупляешься.
     
  11. miketomlin

    miketomlin Активный пользователь

    С нами с:
    9 авг 2016
    Сообщения:
    746
    Симпатии:
    110
    @Valick, может, ему целиком запощенный фрагмент обработать надо, хотя ХЗ.
     
  12. Astar75

    Astar75 Новичок

    С нами с:
    15 сен 2018
    Сообщения:
    13
    Симпатии:
    4
    Я вообще то новичек в PHP, но если я тебя правильно понял, то я написал что-то типа такого
    PHP:
    1. $data = '<div class="download rad-3 pad-20 mbt-48">
    2. <p><a href="wp-content/uploads/2018/06/road.jpg">Учебник</a></p>
    3. <p><a href="wp-content/uploads/2018/06/road.png">1000 слов</a></p>
    4. </div>';
    5.  
    6. $data = explode("\n", $data);
    7.  
    8. foreach ($data as $k => $v) {
    9.     $extension = explode('.', $data[$k]);
    10.     if (isset($extension[1])) {
    11.         $extension = substr($extension[1], 0, strpos($extension[1], '"'));
    12.         $data[$k] = str_replace("<a", "<a class=\"{$extension}\"", $data[$k]);
    13.     }
    14. }
    15.  
    16. $data = implode("\n", $data);
     
  13. Valick

    Valick Новичок

    С нами с:
    12 авг 2018
    Сообщения:
    219
    Симпатии:
    41
  14. Astar75

    Astar75 Новичок

    С нами с:
    15 сен 2018
    Сообщения:
    13
    Симпатии:
    4
    я новичек в php, да и с вордпрессом не работал на уровне написания кода. То что я написал выше -- есть костыль, и это можно было бы сделать более лаконично с помощью регулярных выражений, но я не имею опыта