За последние 24 часа нас посетили 17797 программистов и 1654 робота. Сейчас ищут 1513 программистов ...

Изменить атрибут у тэга - preg_replace

Тема в разделе "Регулярные выражения", создана пользователем megapiz, 29 июл 2013.

  1. megapiz

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

    С нами с:
    29 авг 2009
    Сообщения:
    11
    Симпатии:
    0
    подсжите как из этого

    <td width="457" background="Images/Frame_RB_Top.gif" alt="test">

    сделать

    <td width="457" background="мой путь" alt="test">


    кавычки могут быть и одинарные, и самое главное - мне надо изменить только содержимое
    background="" - т.к. я не знаю зараннее у какого тэга он может быть
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Что генерит тэг? php? Если да, то причем тут регекспы, если можно:

    Код (Text):
    1. <td width="457" background="<?php echo $my_value ?>" alt="test">
    ну или если шорты на php активированы:
    Код (Text):
    1. <td width="457" background="<?=$my_value?>" alt="test">
     
  3. megapiz

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

    С нами с:
    29 авг 2009
    Сообщения:
    11
    Симпатии:
    0
    нет, готовый обрабатываю - вот ответ - там где двойка - это и есть содержимое между кавычками

    Код (Text):
    1. <?php
    2. $pattern = "/background=(\'|\")(.*?)(\'|\")/";
    3. $replacement = "background=\"\${2}\"";
    4. $subject = "<td width=\"457\" background=\"Images/Frame_RB_Top.gif\" alt=\"test\">";
    5. $limit = -1;
    6. $count = 0;
    7. $result = preg_replace ($pattern, $replacement, $subject, $limit, $count);
    8. ?>
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Ммм.. Надо бы сохранить, как пример анальной стоматологии.
    И откуда тут "готовое", если вы скриптом создаете конечный вывод?

    Почему бы не сделать так:
    Код (Text):
    1. <?php
    2. $subject = "<td width=\"457\" background=\"$обычная_переменная_с_содержимым\" alt=\"test\">";
    3. ?>
    ?
    Не нужно придумывать себе проблемы, чтобы потом придумывать для них решения.
     
  5. megapiz

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

    С нами с:
    29 авг 2009
    Сообщения:
    11
    Симпатии:
    0
    тот код что я вставил - это результат работы онлайн тестера regexp

    и да, тут не в стоматологии дело - так как надо было в произвольном хтмл изменить все бэкграунды на свои - например переделать абсолютные ссылки на относительные используя callback
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Опишите, пожалуйста, суть проекта и самой механики выкачивания с последующей заменой. Что-то как-то...

    Добавлено спустя 8 минут 15 секунд:
    в общем очень смахивает или на граббер или на неправильную архитектуру. Со вторым помогу, с первым - увольте.
     
  7. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    вот регулярка на выборку атрибута с разными кавычками или без них, осталось переделать под replace )
    Код (Text):
    1. #cat=([\'\"]?)(?<res>(?(?=[\'\"])[^\\1]*|[^\s]*))\\1#