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

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

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

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

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    я поставил ограничение жадности "?" тоесть еси он доходит до первого > он останавливается
     
  2. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    Квантификатор жадности срабатывает на первое вхождение....
    Вхождение будет
    <input type="hidden" name="inviter" value=""><input type="hidden" name="token" value="67f21d69aa231" />
    если ограничить конструкцией [^>]*, то оно будет считывать до первой попавшейся скобочки ">"
     
    #462 FireFenix, 5 Jun 2009
    Last edited: 5 Jun 2009
  3. Doom123

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

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    FireFenix уху )) спс =)
     
  4. alwex

    alwex New Member

    Joined:
    14 Dec 2008
    Messages:
    137
    Likes Received:
    4
    Reputations:
    2
    смотрите мне надо чтобы парсер проверял типо так

    Code:
    <a href="любой текст" любой текст(типо alt="" title="")>Любой текст</a>
    или
    <a href="любой текст" любой текст(типо alt="" title="")><img src="любой текст" height="33" width="88" любой текст></a>
    Эта регулярка роботает как-то не так:
    PHP:
    #(<a href=".*" alt=".*">.*</a>)|<a href=".*" alt=".*"><img scr=".*" alt=".*" \/></a>#
     
    #464 alwex, 6 Jun 2009
    Last edited: 6 Jun 2009
  5. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    Проверял? зачем? Может что-то нужно достать? или тебе именно нужно проверять?
     
  6. alwex

    alwex New Member

    Joined:
    14 Dec 2008
    Messages:
    137
    Likes Received:
    4
    Reputations:
    2
    у меня скрипт какой контролирует баннерные места и надо чтобы он проверял что юзер ввел на место там где должен быть баннер (форма с полем код)

    Нужно проверять
     
  7. FireFenix

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

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

    $string 
    '<a href="любой текст" alt="111" title="222">Любой текст</a>';
    $regexp '/<a href="([^"]*)"[^>]*>.*<\/a>/is';

    preg_match_all($regexp$string$match);

    if (
    strlen($match[1][0]) > 0)
    {
      echo(
    'Правильно "' $match[1][0] . '"<br>');
    }

    echo(
    '<hr>');

    unset(
    $match);

    $string '<a href="любой текст" любой текст(типо alt="" title="")><img src="любой текст картинки" height="33" width="88" любой текст></a>';
    $regexp '/<a href="[^"]*"[^>]*><img src="([^"]*)"[^>]*><\/a>/is';

    preg_match_all($regexp$string$match);

    if (
    strlen($match[1][0]) > 0)
    {
      echo(
    'Правильно "' $match[1][0] . '"<br>');
    }

    ?>
    Вот мини код, который проверяет шаблон <a> и <a> + <img> и при наличии ссылок - говорит, что всё хорошо :)
     
    #467 FireFenix, 6 Jun 2009
    Last edited: 6 Jun 2009
  8. alwex

    alwex New Member

    Joined:
    14 Dec 2008
    Messages:
    137
    Likes Received:
    4
    Reputations:
    2
    ща протестю...
     
  9. alwex

    alwex New Member

    Joined:
    14 Dec 2008
    Messages:
    137
    Likes Received:
    4
    Reputations:
    2
    я делал так но постоянно пишет что ошибка

    Code:
    $regexp = '/<a href="([^"]*)"[^>]*>.*<\/a>/is';  
    if(!preg_match($regexp, $_POST['code'])) { 
      die("Вы не правильно ввели код баннера или ссылки");
    } 
    $regexp = '/<a href="[^"]*"[^>]*><img src="([^"]*)"[^>]*><\/a>/is'; 
    if(!preg_match($regexp, $_POST['code'])) {
      die("Вы не правильно ввели код баннера или ссылки"); 
    }
     
  10. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    Пример вставляемой строки из $_POST в студию
    PHP:
    <?php

    $string 
    '<a href="любой текст">Любой текст</a>';
    //$string = '<a href="любой текст" любой текст(типо alt="" title="")><img src="любой текст картинки" height="33" width="88" любой текст></a>';

    $regexp '/(<a href="([^"]*)"[^>]*>.*<\/a>|<a href="[^"]*"[^>]*><img src="([^"]*)"[^>]*><\/a>)/is'
    if(!
    preg_match($regexp$string)) 
    {
      die(
    "Вы не правильно ввели код баннера или ссылки"); 
    } else {
      die(
    "Правильно");
    }

    ?>
    Всё прекрасно работает
     
    #470 FireFenix, 6 Jun 2009
    Last edited: 6 Jun 2009
  11. alwex

    alwex New Member

    Joined:
    14 Dec 2008
    Messages:
    137
    Likes Received:
    4
    Reputations:
    2
    Code:
    <a href="http://site.ru" alt="site">fh</a>
     
  12. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    Ну если у тебя так в твоём посте, то получается что если ввели первый неправильно, то второй не проверяется из-за die() :)
    Постом выше я объединил 2 в 1, попробуй его
     
  13. alwex

    alwex New Member

    Joined:
    14 Dec 2008
    Messages:
    137
    Likes Received:
    4
    Reputations:
    2
    ща попробую echo вывести потому что реально не хочет
     
  14. alwex

    alwex New Member

    Joined:
    14 Dec 2008
    Messages:
    137
    Likes Received:
    4
    Reputations:
    2
    всеравно не правильно...
     
  15. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    У меня всё работает....
    Приведи кусочек кода обработки и какие ты входные данные используешь
     
  16. alwex

    alwex New Member

    Joined:
    14 Dec 2008
    Messages:
    137
    Likes Received:
    4
    Reputations:
    2
    смотри, есть форма POST и я нажимаю Сабмит и проверяю данные сначало, на empty() потом на strlen() и птом на регулярку и оно пишет Вы не правильно ввели код баннера или ссылки
     
  17. alwex

    alwex New Member

    Joined:
    14 Dec 2008
    Messages:
    137
    Likes Received:
    4
    Reputations:
    2
    попробуй у себя в ПОСТ форме сделать
     
  18. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    Честно, я не знаю почему у тебя не работает. Вот вместе c HTML мой вариант - показывает результат 2х выборок.
    PHP:
    <form id="form1" name="form1" method="post" action="?">
    <input id="code" name="code" type="text" size="100" value='<a href="/home/1234njj757hjvd.jpg">Я ссылко</a>'>
    <input name="Submit" type="submit" value="button">
    </form>

    <?php 

    //$string = '<a href="любой текст">Любой текст</a>'; 
    //$string = '<a href="любой текст" любой текст(типо alt="" title="")><img 7890src="любой текст картинки" height="33" width="88" любой текст></a>'; 

    if (strlen($_POST['code']) > )
    {
      
    $regexp1 '/<a href="[^"]*"[^>]*>.*<\/a>/is';  
      
    $regexp2 '/<a href="[^"]*"[^>]*><img src="[^"]*"[^>]*><\/a>/is';

      if(!
    preg_match($regexp1$_POST['code']))  
      { 
        echo(
    "1 : Вы не правильно ввели код баннера или ссылки");  
      } else { 
        echo(
    "1 : Правильно"); 
      }

      echo(
    '<br>');

      if(!
    preg_match($regexp2$_POST['code']))  
      { 
        echo(
    "2 : Вы не правильно ввели код баннера или ссылки");  
      } else { 
        echo(
    "2 : Правильно"); 
      }


    ?>
    Может у тебя предидущая проверка останавливает? или не с того контрола считываешь?
     
    #478 FireFenix, 6 Jun 2009
    Last edited: 6 Jun 2009
  19. alwex

    alwex New Member

    Joined:
    14 Dec 2008
    Messages:
    137
    Likes Received:
    4
    Reputations:
    2
    ну я розбирусь. спасибо за регулярку
     
  20. alwex

    alwex New Member

    Joined:
    14 Dec 2008
    Messages:
    137
    Likes Received:
    4
    Reputations:
    2
    смотри у меня есть форма и почему то когда я echo вывожу то выводит

    Code:
    <a href=\"/home/1234njj757hjvd.jpg\">Я ссылко</a>
    тоисть надо сделать парсер чтобы он поддерживал \"\"
     
Thread Status:
Not open for further replies.