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

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

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

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    PHP:
    <?php

    $test 
    ':0.4.5.14.25:1.18.28:2.3.22.31:6.13.15.20.24.27:7.30:8.9.19.21:10.12.17:11.26:16:23:29:';  

    $regex '/\:([\.\d]+)/';

    preg_match_all($regex$test$match);

    print_r($match);

    ?>
    p.s. поправил. Спасибо Gift =)

    или вначале убираем с концов ':' и через explode(':', $test);
     
    #641 FireFenix, 12 Sep 2009
    Last edited: 13 Sep 2009
  2. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    m0Hze
    PHP:
    $str ':0.4.5.14.25:1.18.28:2.3.22.31:6.13.15.20.24.27:7.30:8.9.19.21:10.12.17:11.26:16:23:29:';
    preg_match_all('#(?<=:)[^:]+(?=:)#si',$str,$res);
    var_dump($res);
    // Или если обрамляющего текста нет, то вообще так:
    preg_match_all('#[^:]+#si',$str,$res);
    var_dump($res);
    FireFenix Опять таки, ваша регулярка будет через раз одно числа получать
     
    _________________________
  3. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    Не очень понял, про что ты, но мой скрипт валяется либо в полезных скриптах, либо еще где:

    PHP:
    <?php
    // Парсер url после выдачи гугла по запросу
    $handler=fopen('log.txt','w'); // если не хотим терять старые данные - то "a+"
    $limit 0;
    $zapros "antichat"// Наш запрос для поиска
    $page_start 0// Стартовая страница из расчета 100 результатов выдачи на страницу
    $page_end 200// Последняя страница из расчета 100 результатов выдачи на страницу
    function parse_serp($engine$query$limit)
    {
    if (
    $limit<100) {$request 'http://www.google.com/ie?hl=ru&num=100&start=' $limit'&lr=&q='.urlencode(trim($query));}
    if (
    $limit>=100) {$request 'http://www.google.com/ie?q=' urlencode(trim($query)) . '&num=100&hl=ru&lr=&start=' $limit '&sa=N';}
    $pattern '/<a title="(.*)" href=(.*)>(.*)<\/a>/isU';
    $result file_get_contents($request);
    if(
    preg_match_all($pattern$result$matches))
    {
    for (
    $i=0$i<count($matches[0]); $i++)
    {
    $link $matches[2][$i];
    $serp[] = $link;
    }
    }
    return 
    $serp;
    }
    for (
    $i=$page_start;$i<=$page_end;$i++)
    {
    $result parse_serp("google"$zapros$i);
    $log implode("\r\n",$result);
    if(
    $handler) {fwrite($handler,$log);}
    $i=$i+100;
    if (
    $i>100) {$i=$i-1;}
    }
    fclose($handler);
    echo 
    "Все данные были сохранены в log.txt"
    ?>
    На текущий момент есть многопоточный и с поддержкой прокси. Стоимость 10 000$

    PS: Сорри, если недопонял вопрос
     
  4. wildshaman

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

    Joined:
    16 Apr 2008
    Messages:
    477
    Likes Received:
    483
    Reputations:
    99
    2мохзе:
    PHP:
    <?php
    $t
    =file_get_contents("http://www.google.com/search?hl=en&q=antichat");
    preg_match_all('|<h3 class=r><a href="(.*?)" class=l>(.*?)</a>|'$t$out);
    for (
    $i=0$i<count($out[1]); $i++)
        echo 
    $out[1][$i]." - ".$out[2][$i]."<br>";

    ?>
     
    1 person likes this.
  5. Patronik

    Patronik Member

    Joined:
    16 Mar 2009
    Messages:
    111
    Likes Received:
    12
    Reputations:
    0
    есть строка 158 разних слов не считаю символи пунктуации
    надо разбить ее на строки по 6 слов! и записать в масив
     
  6. Architek86

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

    Joined:
    20 Feb 2008
    Messages:
    80
    Likes Received:
    1
    Reputations:
    0
    дан код:
    <table>бла-бла a1a1a1 бла-бла</table><table>бла-бла a2a2a2 бла-бла</table><table>бла-бла a3a3a3 бла-бла</table>.............
    как найти и удалить, к примеру, <table>бла-бла a2a2a2 бла-бла</table>
    т.е. preg_replace($pattern,'',$content)
    $pattern чему будет равен?
    Думал, так сделать: <table>(.*)a2a2a2(.*)</table>, но тогда сюда попадает ведь весь текст.
     
  7. svesve

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

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11
    тебе надо удлаить a2a2a2a2? или то что сбоку?
     
  8. Architek86

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

    Joined:
    20 Feb 2008
    Messages:
    80
    Likes Received:
    1
    Reputations:
    0
    надо удалить всю таблицу, содержащую в себе a2a2a2a2 (например), т.е. от <table> до </table> включая и эти теги.
     
  9. PaCo

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

    Joined:
    6 Feb 2008
    Messages:
    436
    Likes Received:
    138
    Reputations:
    25
    Cтавить жадность поменьше e.g.:
    #<table>.*a2a2a2.*</table>#Us
     
    1 person likes this.
  10. Patronik

    Patronik Member

    Joined:
    16 Mar 2009
    Messages:
    111
    Likes Received:
    12
    Reputations:
    0
    Написал выражуху для поиска url в тексте
    $pattern = "/^[http://www|www]+(\.[a-z])+(\.[a-z])*$/";

    $find = preg_match($pattern, $text);

    А пхп выдает мне
    Warning: preg_match(): Empty regular expression in D:\Program Files\PHP Expert Editor
    4.3\phpF.tmp on line 9
    Что не так?
     
  11. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    Ошибка синтаксиса в регулярном выражении - когда в начале и в конце регулярки "/", то надо экранировать все спецсимволы, т.е. "http:\/\/", или сделать так:

    PHP:
    <pre>
    <?php
    @ini_set("display_errors","1");
    $text 'wetwgsdg http://site.ru sdgdsfgs34564325 http://www.site.ru/index.php ывпывапып www.rambler.ru';
    $pattern "#(http://[^\s]+)|(www.[^\s]+)#";
    preg_match_all($pattern$text$res);
    print_r ($res[0]); 
    ?>
    </pre>
     
    #651 Pashkela, 22 Sep 2009
    Last edited: 22 Sep 2009
  12. Patronik

    Patronik Member

    Joined:
    16 Mar 2009
    Messages:
    111
    Likes Received:
    12
    Reputations:
    0
    Спасибо! Понял!
     
  13. Patronik

    Patronik Member

    Joined:
    16 Mar 2009
    Messages:
    111
    Likes Received:
    12
    Reputations:
    0
    if( preg_match("#(http://[^\s]+)|(www.[^\s]+)#i", $line, $resalt) )
    {
    $line = preg_replace("#(http://[^\s]+)|(www.[^\s]+)#i", '<a href="'.$resalt[0].'">'.$resalt[0].'</a>', $line);
    }

    Подскажите как нормальную подсветку урл сделать. Делаю так как напсиал подчвечивает только урл начинающиеся с http а если начинаеться с www то некоректно работает.
     
    1 person likes this.
  14. xtra

    xtra New Member

    Joined:
    11 Mar 2007
    Messages:
    26
    Likes Received:
    2
    Reputations:
    0
    ребята, что нужно добавить в .htaccess чтобы и http://site.com/link.php и http://site.com/link/ были одним и темже ?

    и ещё вопрос.

    я постараюсь максимально понятно изложить свою мысль. как правильно составить .htaccess чтобы при запросе неверной страницы (404) (http://site.com/download/drama.mp3.html) небыло редиректа на 404.пхп а писало File "file drama.mp3 not found"

    тоесть подставить можно заместо drama.mp3 всё что угодно, и если файла нету - выплёвывает что такого файла нету
     
  15. zifanchuck

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

    Joined:
    27 Oct 2008
    Messages:
    396
    Likes Received:
    154
    Reputations:
    3
    а как составить регулярку чтобы из
    http://getdle.org.ru/uploads/posts/2009-09/thumbs/1253897356_1.gif
    получить
    1253897356_1.gif
    пробовал примерно так #\/(.*)\.jpg#iU
    получаю
    /getdle.com/uploads/posts/2009-09/thumbs/1252870317_full
    ссылки разные будут так что нужен какойто универсайльный... надеюсь на помощь
     
  16. L I G A

    L I G A Banned

    Joined:
    27 Jul 2008
    Messages:
    482
    Likes Received:
    380
    Reputations:
    49
    http://getdle.org.ru/uploads/posts/2009-09/thumbs/1253897356_1.gif
    пробовал примерно так #\/(.*)\.jpg#iU
     
  17. [dei]

    [dei] Active Member

    Joined:
    24 Nov 2008
    Messages:
    171
    Likes Received:
    112
    Reputations:
    5
    #([^/]*)$#
     
  18. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Вот такой вопрос... Почему в регулярках чаще всего юзают
    Code:
    #([^/]*)$#
    Что-то типа такого... Я знаю синтаксис, здесь - всё, кроме слеша. Ведь можно сложить полный регекс...
     
  19. zifanchuck

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

    Joined:
    27 Oct 2008
    Messages:
    396
    Likes Received:
    154
    Reputations:
    3
    спс

    туплю(
     
  20. .::BARS::.

    .::BARS::. Elder - Старейшина

    Joined:
    13 Oct 2007
    Messages:
    379
    Likes Received:
    45
    Reputations:
    10
    есть страницы
    site.ru/p/123
    site.ru/p/124
    site.ru/p/125
    site.ru/p/126
    ну и так далее....
    я обращаюсь(точнее хочу обратиться) к ним как site.ru/?a=p&b=123 и т.д.

    как это сделать... что бы при втором варианте иметь ответ такой же как и в первом!?
     
Thread Status:
Not open for further replies.