За последние 24 часа нас посетили 16647 программистов и 1681 робот. Сейчас ищут 819 программистов ...

не работает perl - регуляреное выражени

Тема в разделе "Регулярные выражения", создана пользователем tors, 7 апр 2010.

  1. tors

    tors Активный пользователь

    С нами с:
    22 мар 2010
    Сообщения:
    41
    Симпатии:
    0
    PHP:
    1.  
    2. $val='Автор: <a href="mailto:%C3%8D%C3%A5%C3%A8%C3%A7%C3%A2%C3%A5%C3%B1%C3%B2%C3%A5%C3%AD">Aleksey</a>';
    3. $rxp='/^(Автор:)(.+)(a>)$/';
    4. $res=preg_match($rxp,$val,$Word);
    5.  
    так работает, те $res==true
    и $Word[0] - Возвращает то, что нужно:
    Автор: <a href=
    "mailto:%C3%8D%C3%A5%C3%A8%C3%A7%C3%A2%C3%A5%C3%B1%C3%B2%C3%A5%C3%AD">
    Aleksey</a>

    а если :

    $
    PHP:
    1. config=array('ident' => TRUE,
    2.     'char-encoding' => win1251,
    3.     'input-encoding' => win1251,
    4.     'output-encoding' => win1251);
    5.  
    6. $link="http://www.xakep.ru/post/49795/default.asp";
    7.  
    8. $tidy=new tidy;
    9. $rs=$tidy->parseFile($link,$config);
    10. $val=$node->value;
    11. $rxp='/^(Автор:)(.+)(a>)$/';
    12. $res=preg_match($rxp,$val,$Word);
    res==false,
    хотя полученный текст html - документа содержит :
    HTML:
    1.  
    2. Автор: <a href=
    3. "mailto:%C3%8D%C3%A5%C3%A8%C3%A7%C3%A2%C3%A5%C3%B1%C3%B2%C3%A5%C3%AD">
    4. Aleksey</a>
    5.  
    только с разрывами строк после href= и перед Aleksey

    почему не работает regexp?
     
  2. tors

    tors Активный пользователь

    С нами с:
    22 мар 2010
    Сообщения:
    41
    Симпатии:
    0
    сорри, пропустил в примере кода строку :

    PHP:
    1. config=array('ident' => TRUE,
    2.      'char-encoding' => win1251,
    3.      'input-encoding' => win1251,
    4.      'output-encoding' => win1251);
    5.  
    6.  $link="http://www.xakep.ru/post/49795/default.asp";
    7.  
    8.  $tidy=new tidy;
    9.  $rs=$tidy->parseFile($link,$config);
    10.  $node=$tidy->Body();
    11.  $val=$node->value;
    12.  $rxp='/^(Автор:)(.+)(a>)$/';
    13.  $res=preg_match($rxp,$val,$Word);
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    вал чему равно? сделай
    echo '+++'.$val.'+++'; и запости сюда плс.
     
  4. tors

    tors Активный пользователь

    С нами с:
    22 мар 2010
    Сообщения:
    41
    Симпатии:
    0
    можно посмотреть исходный код :
    http://www.xakep.ru/post/49795/default.asp

    $val == исходному коду по приведенному url - проверено

    те по echo $val отображается точно такая страничкана
     
  5. tors

    tors Активный пользователь

    С нами с:
    22 мар 2010
    Сообщения:
    41
    Симпатии:
    0
    Возможно проблема из-за кодировок?
    Как решить?