[Регулярки & Mod_Rewrite] Задай вопрос, получи ответ.

Discussion in 'PHP' started by .:EnoT:., 19 Nov 2008.

Thread Status:
Not open for further replies.
  1. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Ээ нее,брат:).В логине нельзя юзать все символы:):):)
     
  2. ph1l1ster

    ph1l1ster Elder - Старейшина

    Joined:
    11 Mar 2008
    Messages:
    396
    Likes Received:
    153
    Reputations:
    19
    помогите с регуляркой под перл:

    Code:
    <a class="tiny" href="/admin/stop.html">stop.html</td><td bgcolor=red width="800">
    <a class="tiny" href="/admin/start.php">start.php</td><td bgcolor=red width="800">
    Нужно вытащить:

    stop.html
    start.php

    пытаюсь:
    Code:
    <a class=\"tiny\" href=\"\/admin\/([^\s]+(?=\.(html|php))\.\2)\">
    выводит:
    Code:
    stop.html
    html
    start.php
    php
     
  3. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    |<a class=.*href=.*>(.*)</td><td bgcolor=.*width=.*>|
     
  4. PaCo

    PaCo Elder - Старейшина

    Joined:
    6 Feb 2008
    Messages:
    436
    Likes Received:
    138
    Reputations:
    25
    а зачем расширения заносишь в подмаску? Лучше уже в символьный класс:

    <a class=\"tiny\" href=\"\/admin\/([^\s]+(?=\.[html|php])\.\2)\">
     
  5. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    ph1l1ster ну с перлом я не дружу, но вариантов регулярок тонна.
    Вот хотя бы две:
    Code:
    '#href="/admin/([^"]*)"#'
    Code:
    '#>([^<>]*)</#'

    PaCo
    Зачем в шаблон вносить данные которые совсем не нужны? (Хотя конечно зависит от конкретного случая, но всё же)
     
  6. Zitt

    Zitt Elder - Старейшина

    Joined:
    7 May 2006
    Messages:
    736
    Likes Received:
    268
    Reputations:
    59
    есть записаь типа
    как на выходе получить title:body ? при условии что это встречается не один раз в тексте...

    снимаю вопрос.. допетрил сам))
    протсо заменил не ннужные знаки preg_replace'ом )
     
    #326 Zitt, 24 Mar 2009
    Last edited: 24 Mar 2009
  7. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    В догонку) Если без реплейса
    PHP:
    preg_match_all('#<td>([^<>]*)</td>#'$str$out);
    echo 
    join(''$out[1]);
     
  8. #Wolf#

    #Wolf# Elder - Старейшина

    Joined:
    26 Mar 2008
    Messages:
    375
    Likes Received:
    166
    Reputations:
    16
    вот имеется регулярка для замены кликабельных ссылок
    PHP:
    preg_replace('~<a.*href="([^"]+)".*>.*</a>~Usi','$1',$row['full_news']);
    пример:
    -->
    но она работает некоректно с highslid'ом (увеличение картинки при нажатии)
    вот пример кода:

    и получаю вот что
    вот и собственно вопрос.. как доработать регулярку что бы не было такого?..

    ---------------------
    и еще хотел спросить - как добавить поддержку исключение для замены для хоста - site.ru (т.е мой хост не ссылающийся на внешние ресурсы.)
    спасибо.
    -------------------
    и накидать похожую регулярку только оставлять ссылки как есть и добавлять rel="nofollow" и ноиндекс
    (пример тут http://sapehelp.ru/tools/noindex-generator/)
    с меня как обычно много +сов
     
    #328 #Wolf#, 29 Mar 2009
    Last edited: 29 Mar 2009
  9. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    #Wolf#
    По первому - как вариант:
    PHP:
    <a.*href="([^"]+)".*>.{3,}</a>
    т.е. если между тэгами "a" меньше 3 символов, то не заменять


    Насчет ноиндекс - уже отвечали вроде: https://forum.antichat.ru/showpost.php?p=1057786&postcount=7837
     
    _________________________
    1 person likes this.
  10. #Wolf#

    #Wolf# Elder - Старейшина

    Joined:
    26 Mar 2008
    Messages:
    375
    Likes Received:
    166
    Reputations:
    16
    что то ничего не изменилось... как резало так и режет... :confused:
    ох..совсем запямятовал что уже спрашивал :) ;)
     
  11. [dei]

    [dei] Active Member

    Joined:
    24 Nov 2008
    Messages:
    171
    Likes Received:
    112
    Reputations:
    5
    #Wolf#
    Code:
    #<a.*href="([^"]+)".*>[^<]+</a>#Usi
     
  12. #Wolf#

    #Wolf# Elder - Старейшина

    Joined:
    26 Mar 2008
    Messages:
    375
    Likes Received:
    166
    Reputations:
    16
    вобще вырезало все от первой картинки(с highslide) до последней ссылки
    от <a и до самого последнего </a>
     
    #332 #Wolf#, 30 Mar 2009
    Last edited: 30 Mar 2009
  13. [dei]

    [dei] Active Member

    Joined:
    24 Nov 2008
    Messages:
    171
    Likes Received:
    112
    Reputations:
    5
    а что нужно?
     
  14. #Wolf#

    #Wolf# Elder - Старейшина

    Joined:
    26 Mar 2008
    Messages:
    375
    Likes Received:
    166
    Reputations:
    16
    http://forum.antichat.ru/showpost.php?p=1195927&postcount=349
     
  15. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    короче нефига не понял, но вот:

    PHP:
    <pre>
    <?php
    $in 
    = <<<HTML
    <a href="http://www.site.ru/polnoy_izobrajenie.jpg" onClick="return hs.expand(this)" ><img src="http://www.site.ru/umenshennoe_izobrajenie.jpg" style="border: none;" alt='alt alt alt' title='test test ' /></a>
    HTML;

    preg_match ('|<a href="(.*)".*>.*</a>|Ui',$in,$rez);
    print_r ($rez);

    echo 
    preg_replace ('|<a href="(.*)".*>.*</a>|Ui','$1' ,$in);

    ?>
    </pre>
     
    #335 Pashkela, 30 Mar 2009
    Last edited: 30 Mar 2009
  16. EST a1ien

    EST a1ien Elder - Старейшина

    Joined:
    2 Apr 2006
    Messages:
    249
    Likes Received:
    48
    Reputations:
    16
    Вроде небыло этой ссылочки.
    Вот очень полезная штука.
    http://gskinner.com/RegExr/
     
  17. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    #Wolf# Как то так
    PHP:
    $in = <<<HTML
    <a href="http://www.site.ru/polnoy_izobrajenie.jpg" onClick="return hs.expand(this)" ><img src="http://www.site.ru/umenshennoe_izobrajenie.jpg" style="border: none;" alt='alt alt alt' title='test test ' /></a>
    HTML;

    echo 
    preg_replace('~<a.*href="([^"]+)"(?(?!expand)[\s\S])*?>.*?</a>~si','$1',$in);
     
    _________________________
  18. Zitt

    Zitt Elder - Старейшина

    Joined:
    7 May 2006
    Messages:
    736
    Likes Received:
    268
    Reputations:
    59
    как из этого
    выдрать саму ссылку?? в тексте встречается много раз....
     
  19. Vid0k

    Vid0k Elder - Старейшина

    Joined:
    24 Dec 2007
    Messages:
    393
    Likes Received:
    125
    Reputations:
    13
    Code:
    /<a id=\"ct_gv_ct_NAME\" href=\"(.*?)\">.*?<\/a>/
    
    попробуй
     
  20. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    PHP:
    <?php
    $in 
    '<a id="ct_gv_ct_NAME" href="Default.aspx?action=go&amp;PGIndex%3d0%26WPGOrderBy%3d ">link_name</a>';
    preg_match_all('|a id=.*href="(.*)">.*</a>|Ui',$in,$rez);
    print_r($rez);
    ?> 
     
Thread Status:
Not open for further replies.