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

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

Thread Status:
Not open for further replies.
  1. 0ldbi4

    0ldbi4 Elder - Старейшина

    Joined:
    14 Apr 2008
    Messages:
    264
    Likes Received:
    51
    Reputations:
    10
    Парсинг..

    Доброго времени суток помогите с парсом страницы:

    То что нужно спарсить выделенно ;)

    Code:
    <div class="si_map_header" id="HTML_curr_map"> 
    					[COLOR=Magenta]de_train[/COLOR]  </div>

    Code:
    <div class="si_map_image" id="HTML_map_ss_img"> 
    					<img src="[COLOR=Magenta]http://image.www.gametracker.com/images/maps/160x120/cs/de_train.jpg[/COLOR]" alt="" class="item_160x120" />

    Code:
    <span id="HTML_num_players">[COLOR=Magenta]0[/COLOR]</span> / <span id="HTML_max_players">[COLOR=Magenta]21[/COLOR]</span> 


    _________________________________________________

    Буду благодарен за помощь
     
    #1081 0ldbi4, 29 Apr 2010
    Last edited: 29 Apr 2010
  2. .Slip

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

    Joined:
    16 Jan 2006
    Messages:
    1,571
    Likes Received:
    977
    Reputations:
    783
    20ldbi4
    1. /<div.+>\s+(.+)\s+<\/div>/
    2. /<img src=\"(.+?)\".+>/
    3. /<span id=\"HTML_num_players\">(.+?).+<span id=\"HTML_max_players\">(.+)<\/span>/
     
    #1082 .Slip, 29 Apr 2010
    Last edited: 29 Apr 2010
    2 people like this.
  3. mazaxaka

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

    Joined:
    15 Feb 2008
    Messages:
    268
    Likes Received:
    35
    Reputations:
    0
    хм.. все равно что то не так

    <div>Общий заработок: <span>$5.03</span></div>


    Code:
    $resp =~ /<div>Общий заработок: <span>\$(\d+\.)(\d+)<\/span><\/div>/smi;
    
            my ($money) = $1 . $2;
    usr of ininitialized velue $1 и $2
     
  4. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    Code:
    my $str = '<div>Общий заработок: <span>$5.03</span></div>';
    
    $str =~ /<span>(\$\d+\.\d+)<\/span>/; print $1;
    
     
    #1084 d_x, 29 Apr 2010
    Last edited: 29 Apr 2010
  5. mazaxaka

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

    Joined:
    15 Feb 2008
    Messages:
    268
    Likes Received:
    35
    Reputations:
    0
    чтот я с етим знаком долара туплю.. пробывал екранировать все равно.
     
  6. Fepsis

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

    Joined:
    17 Sep 2008
    Messages:
    791
    Likes Received:
    391
    Reputations:
    72
    Символы < и > тоже надо экранировать...

    Code:
    my $str = '<div>Общий заработок: <span>$5.03</span></div>'; 
    $str =~ /\<div\>Общий заработок: \<span\>\$(.+?)\<\/span\>\<\/div\>/; 
    print $1."\n";
     
    #1086 Fepsis, 29 Apr 2010
    Last edited: 29 Apr 2010
  7. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    Там не ошибка, там тег
    PHP:
     убрал экранированиеСделал в [code], сейчас нормально
     
  8. mazaxaka

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

    Joined:
    15 Feb 2008
    Messages:
    268
    Likes Received:
    35
    Reputations:
    0
    всеравно ошибка
    usr of ininitialized velue $1

    к чему ето строка не понятно

    Code:
    my $str = '<div>Общий заработок: <span>$5.03</span></div>'; 
    етоя привет кусок кода страници который нужно спарсить
    PHP:
    <div>Общий заработок: <span>$5.03</span></div>
     
  9. Fepsis

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

    Joined:
    17 Sep 2008
    Messages:
    791
    Likes Received:
    391
    Reputations:
    72
    Тебе не надо её писать.. она для примера..
    Code:
    $str = 'код страницы с которой парсишь данные';
    $str =~ /\<div\>Общий заработок: \<span\>\$(.+?)\<\/span\>\<\/div\>/g; 
    print $1."\n";
     
  10. mazaxaka

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

    Joined:
    15 Feb 2008
    Messages:
    268
    Likes Received:
    35
    Reputations:
    0
    все равно
    usr of ininitialized velue $1
    а разве +? может парсить дробные числа?
     
  11. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    Сколько можно? Когда угловые скобки в регулярках экранироваться стали внезапно? Используй мой вариант (выше), он работает.

    Доказательство: http://codepad.org/irQ7CyTx

    [​IMG]
     
    1 person likes this.
  12. mazaxaka

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

    Joined:
    15 Feb 2008
    Messages:
    268
    Likes Received:
    35
    Reputations:
    0
    у меня в коде не работает твой способ я уже проверял 100 раз
    usr of ininitialized value $1 in concatenation (.) or string
     
  13. mazaxaka

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

    Joined:
    15 Feb 2008
    Messages:
    268
    Likes Received:
    35
    Reputations:
    0
    пробовал заменить $ точкой. всеравно ошибка при выводе значения
     
  14. Fepsis

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

    Joined:
    17 Sep 2008
    Messages:
    791
    Likes Received:
    391
    Reputations:
    72
    Упс... :rolleyes: Всю сознательную жизнь их экранировал, сейчас глянул и правда без экранирования работает... О_0 В общем я в шоке... :D

    ЗЫ: кстати мой вариант тоже работает (даже без экранирования угловых), так что скорее вснго трабл где-то у ТС-а...

    mazaxaka, ты уверен, что в переменной $str у тебя то, что нужно...
     
  15. mazaxaka

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

    Joined:
    15 Feb 2008
    Messages:
    268
    Likes Received:
    35
    Reputations:
    0
    $resp = $ua->get("http://bonus.depositfiles.com/ru/gold/bonus_program.php")->as_string;
    wf($file, $resp);
    $resp =~ /<a class="button_add" >Выплатить<\/a>.*?<span>.(\d+\.\d+)<\/span>/smi;
    my $money = $1 . $2;
    print $money ;

    специально сохраняю чтобы посомтреть.. страница полность получина. все имеется . но регулярка не вырезает значение.
    немного передлал . на сайте проверил работает. а у меня нет
     
  16. Fepsis

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

    Joined:
    17 Sep 2008
    Messages:
    791
    Likes Received:
    391
    Reputations:
    72
    mazaxaka, там кодировка utf-8, думаю из-за этого не пашет.. переведи "Общий заработок" из windows-1251 в utf-8, а потом подставляй в регулярку...
     
  17. mazaxaka

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

    Joined:
    15 Feb 2008
    Messages:
    268
    Likes Received:
    35
    Reputations:
    0
    спс . сразу кодировку и не глянул. сейчас сделаю
     
  18. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Кодировку и нужно было с самого начала проверять. Для чего существует команда print?
     
  19. XPYMGT

    XPYMGT New Member

    Joined:
    11 Apr 2009
    Messages:
    34
    Likes Received:
    3
    Reputations:
    0
    Как из ссылки вида site.ru/index.php?inc=view&id=777 site.ru/inc/view/id/777 или site.ru/view/777 или ну его нах этот чпу
     
  20. M1ks

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

    Joined:
    23 Aug 2007
    Messages:
    140
    Likes Received:
    9
    Reputations:
    0
    есть:
    index.php?mode=blabla1&act=blabla2
    index.php?mode=blabla3&act=blabla2
    нужно чтобы было site.com/blabla1
    site.com/blabla3
     
Thread Status:
Not open for further replies.