"умная" регулярка

Тема в разделе "Как сделать...", создана пользователем zilon, 26 июн 2013.

  1. zilon

    zilon

    Регистр.:
    30 июл 2011
    Сообщения:
    370
    Симпатии:
    147
    есть ссылка с атрибутами например - class="ololo" id="trololo"

    HTML:
    <a class="ololo" id="trololo" href="/.*/"><b>.*</b></a>
    надо вырезать - class="ololo" id="trololo" записать в переменную и вставить в регулярку вроди как так

    PHP:
    $gan ' class="ololo" id="trololo" ';
    $reg preg_replace ('/<a.*href=".*">/''<a $gan href="#">',  $reg); 
    а чем это можно сделать, какой функцией? :nezn:
     
  2. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    PHP:
    $ssilka '<a href="fds" ....>';
    preg_match('/<a (class=".*?" id=".*?")/uism'$ssilka$gan);
     
    echo 
    $gan['1']
    Если тексть НЕ в формате utf-8, а например вин-1251, то убрать модификатор "u" в тексте /uism

    Далее переменную (элемент массива) $gan['1'] вставляешь в с помощью preg_replace
     
    zilon нравится это.
  3. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    я сейчас упорот но возможно заработает

    Код:
    $count = null;
    $returnValue = preg_replace('~<a.*?((class=".*?".*?id=".*?")|(id=".*?".*?class=".*?")).*?><b>.*</b></a>~', '<a $1>super new</a>', '<a class="ololo" id="trololo" href="adsada"><b>sssss</b></a>
    <a id="trololo" class="ololo" href="sssss"><b>ssss</b></a>', -1, $count);
     
    zilon нравится это.
  4. zilon

    zilon

    Регистр.:
    30 июл 2011
    Сообщения:
    370
    Симпатии:
    147
    заработало!:yahoo::party::alko:

    PHP:
    preg_match('/<a (class=".*?" id=".*?")/uism'$current$gan);
    foreach (
    $gan as $filename) {
    $current preg_replace ("/<a class=.*id=.*href=.#.>/""<a $filename href='/$current_login/'>"$current);}
    только если в ссылке будет сначала id потомом class то хз будет работать или нет... надо тестить
     
  5. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    В примере KillDead - будет. В моем не будет, т.к. в начальных условиях это не оговаривалось.