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

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

Thread Status:
Not open for further replies.
  1. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    strip_tags()
     
  2. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    PHP:
    <?php
    $fp 
    file_get_contents('http://mail.ru/');
    if(
    preg_match_all('#<a.*>(.*)</a>#',$fp$matches))
    {
        foreach (
    $matches[1] as $link) {
         echo 
    $link.'<br>';
     }
    }
    ?>
     
  3. programming

    programming New Member

    Joined:
    26 Aug 2009
    Messages:
    190
    Likes Received:
    3
    Reputations:
    0
    Нужно переменную полностью оставить, а только лишь удалить тег <a href..></a>
    А с помощью strip_tags() можно удалить только тег ссылки, а все другие оставить?
     
  4. whexp

    whexp Member

    Joined:
    30 Nov 2009
    Messages:
    88
    Likes Received:
    29
    Reputations:
    5
    Не знаю, как в PHP, но в Python это делается так:
    Code:
    import re
    print re.sub('<a href=".+">(?P<text>.*?)</a>', '\g<text>', 'Hello, World! <a href="gasgasg">Text</a> HAHA!')
    Получаем следующее:
     
  5. DeluxeS

    DeluxeS Member

    Joined:
    1 Aug 2009
    Messages:
    7
    Likes Received:
    81
    Reputations:
    19
    Есть список доменов, в файле.
    Нужно зону домену в виде:
    Таблица такая:
    Нужно чтобы получилось:
    Т.е. дописывать через несколько пробелов зону домена. Спасибо :)
     
  6. whexp

    whexp Member

    Joined:
    30 Nov 2009
    Messages:
    88
    Likes Received:
    29
    Reputations:
    5
    Читаешь файл полностью, а затем заменяешь по ругулярке. У меня на Python получилось так:
    Code:
    import re
    re.sub('(?P<domain>.*?)(?P<zone>\.\w+)\n', '\g<domain>\g<zone> \g<zone>\n', text)
    Здесь <domain> - все что до .es, а <zone> - как раз .es.

    Вполне вероятно, что можно сделать лучше :)
     
  7. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    PHP:
    <?php
    $str 
    '<a href="url" target="_blank" name="userurl">desc</a>';
    echo 
    preg_replace('#<a.*>(.*)</a>#','$1',$str);
    ?>
    Насчет strip_tags()
    Можно но наоборот, удалить все теги кроме тех которые в :
    $allowable_tags

    Пример:
    PHP:
    <?php
    $text 
    '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
    echo 
    strip_tags($text);
    echo 
    "\n";

    // Allow <p> and <a>
    echo strip_tags($text'<p><a>');
    ?> 

    Результат:
    ЗЫ вообще все ето можно найти на php.net
     
  8. whexp

    whexp Member

    Joined:
    30 Nov 2009
    Messages:
    88
    Likes Received:
    29
    Reputations:
    5
    rushter, это опечатался, или везде должно быть html.html? Если да, то вот на python:
    Code:
    import re
    i = '''http://site.ru/hh-html.html
    http://site.ru/zz-ggsdas.html
    http://site.ru/zz-ggsdas.html'''
    print re.sub('(?P<pre>\w{2})-.+\.html', '\g<pre>/html.html', i)
    
    Результат:
    Если все-же нужно получить такое же имя файла, то:
    Code:
    import re
    i = '''http://site.ru/hh-html.html
    http://site.ru/zz-ggsdas.html
    http://site.ru/zz-ggsdas.html'''
    print re.sub('(?P<pre>\w{2})-(?P<name>.+)\.html', '\g<pre>/\g<name>.html', i)
    
    Результат:
    А вообще это смотреть нужно. Например, если тебе нужно то же имя файла, что и было и при этом дефис больше нигде не встречается, то можно просто по тексту заменить:
    Code:
    print i.replace('-', '/')
    И вот что выйдет:
     
    1 person likes this.
  9. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    rushter, из вашего поста не было ясно, что нужно помочь с правилом для mod_rewrite
    Code:
    RewriteRule ^(.+)/(.+)\.html$ $1-$2.html
    
     
    1 person likes this.
  10. programming

    programming New Member

    Joined:
    26 Aug 2009
    Messages:
    190
    Likes Received:
    3
    Reputations:
    0
    Как составить регулярку для выдирания названия и ссылки стран с http://www.ozon.travel/visas/ ?
    Не понимаю за что зацепиться..
     
  11. OnArs

    OnArs Banned

    Joined:
    1 Aug 2008
    Messages:
    211
    Likes Received:
    13
    Reputations:
    1
    Здравствуйте, ув. Античатовцы!


    • WP установлен в: /news/
    • Есть файл: page-1.html
    • Есть страница WP: /news/pages/page-1


    Задача при запросе страницы page-1.html получать страницу /news/pages/page-1 с использованием ModRewrite (.htaccess).

    В .htaccess файле пишу вот так:
    PHP:
    RewriteEngine On
    RewriteRule 
    ^page-1.html$ /news/pages/page-1
    В ответ при запросе страницы page-1.html получаю 404 страницу WP.

    В чём проблема? Что делаю не так? :confused:


    Заранее благодарен! ;)
     
    #811 OnArs, 6 Dec 2009
    Last edited: 6 Dec 2009
  12. whexp

    whexp Member

    Joined:
    30 Nov 2009
    Messages:
    88
    Likes Received:
    29
    Reputations:
    5
    programming, как-то так:
    Code:
    '<li><a href="(/visas/.*?)">(.*?)</a></li>'
    А вообще лучше самому учиться :)
     
  13. SQLHACK

    SQLHACK Остались только слоны

    Joined:
    27 Sep 2006
    Messages:
    437
    Likes Received:
    372
    Reputations:
    407
    делай редирект не на страницу /news/pages/page-1
    а на index.php?p=xxxxxxx где номер этой страницы, в твоем случае наверно это 1 поэтому будет

    RewriteRule ^page-1.html$ /news/index.php?p=1
     
    _________________________
  14. OnArs

    OnArs Banned

    Joined:
    1 Aug 2008
    Messages:
    211
    Likes Received:
    13
    Reputations:
    1
    У меня имено страница, а не запись в WP. Что в этом случае?
     
  15. SQLHACK

    SQLHACK Остались только слоны

    Joined:
    27 Sep 2006
    Messages:
    437
    Likes Received:
    372
    Reputations:
    407
    Есть файл: page-1.html
    Есть страница WP: /news/pages/page-1

    что я тут не верно понял , я так понял у тебя в папку news установлен wp, pages/page-1 такого урла нет в WP значит это рерайтный урл, но на рерайтный.
    Ты делаешь редирект на рерайтную страницу, вот поэтому у тя и не работает , то есть у /news/pages/page-1 есть и другой адрес, значит и слать надо на него.
     
    _________________________
  16. inlanger

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

    Joined:
    7 Jan 2007
    Messages:
    985
    Likes Received:
    283
    Reputations:
    27
    Народ, подскажите, как удалить последний символ в строке, если он равен нулю?
     
  17. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    PHP:
    <?php
    $str 
    '123eredjkgdg0';
    if(
    substr($str,-1) == 0)
    $str substr($str,1,-1);

    echo 
    $str;
    ?>
     
  18. inlanger

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

    Joined:
    7 Jan 2007
    Messages:
    985
    Likes Received:
    283
    Reputations:
    27
    Мне бы регулярку. Причём для javascript )
     
  19. astrologer

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

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    /0$/
    Code:
    alert('1230'.replace(/0$/, ''));
     
    #819 astrologer, 8 Dec 2009
    Last edited: 8 Dec 2009
  20. LStr1ke

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

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    Так не?
    PHP:
    strlen($string) <= 10 $string '' '' ;
     
Thread Status:
Not open for further replies.