[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

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

    Diavona New Member

    Joined:
    22 Jul 2009
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    Спасибо огромное Попугай=)
     
  2. FireFenix

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

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

    $text 
    'text0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263text';
    $regex '(6[0-3]|[0-5][0-9]|[0-9])';

    preg_match_all($regex$text$match);
    print_r($match);

    ?>
     
    #10882 FireFenix, 23 Jul 2009
    Last edited: 23 Jul 2009
  3. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,520
    Likes Received:
    401
    Reputations:
    196
    Хмм.. вот к примеру я так делаю..

    PHP:

    echo preg_match('/(6[0-3]|[0-5][0-9]|[0-9])/''89') ? 'yes' 'no';


    выводит yes.
     
  4. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    попугай, в твоем случае срабатывает второе условие...
    /(6[0-3]|[0-5][0-9]|[0-9])/

    Но причем здесь ряд чисел?
     
    #10884 mailbrush, 23 Jul 2009
    Last edited: 23 Jul 2009
  5. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,520
    Likes Received:
    401
    Reputations:
    196
    Хм.. а почему он срабатывает то? Этим условием задаются числа от 00 до 59 ведь.

    Ряд чисел... ну то есть мне нужна регулярка, чтоб на входе ей давалось число, и затем провералось - входит ли оно в диапозон от 0 до 63 или нет.
     
  6. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Сорри, не оно срабатывает... срабатывает последнее, т.к. прег_матч ищет первое совпадение. В последнем - [0-9], т.е. цифра от 0 до 9. В строке 89 есть эта цифра, поэтому регулярка срабатывает.

    PS: А тебе обязательно с помощью регулярки делать? Ведь можно проще:
    PHP:
    $number=50//number
    $range=range(0,63); //gen range
    echo in_array($number,$range) ? 'yes' 'no'//checking
     
  7. Fepsis

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

    Joined:
    17 Sep 2008
    Messages:
    791
    Likes Received:
    391
    Reputations:
    72
    Если делать без регулярки, так можно обойтись обычным ИФом, зачем ещё массив создавать..?! :)
     
  8. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    если проверять одно число, то можно задать начало и конец строки или другие границы =)
    PHP:
    <?php

    $text 
    '85'//11
    $regex '/^(6[0-3]|[0-5][0-9]|[0-9]){1}$/'

    preg_match_all($regex$text$match); 
    print_r($match); 

    ?>
    если диапазон, то можно указать количество {n} в каждом условии
     
    #10888 FireFenix, 23 Jul 2009
    Last edited: 23 Jul 2009
  9. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Ну-ну... Ты сам то проверял работспособность этого скрипта?
     
  10. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    Конечно нет!

    PHP:
    <?php

    for ($i = -5$i 70$i++)
    {
      
    $text '11'//11
      
    $regex '/^(6[0-3]|[0-5][0-9]|[0-9]){1}$/'

      
    preg_match_all($regex$i$match); 
      echo (
    $i ' = ' $match[1][0] . '<br>');
    }

    ?>
    Результат
    Code:
    -5 = 
    -4 = 
    -3 = 
    -2 = 
    -1 = 
    0 = 0
    1 = 1
    2 = 2
    3 = 3
    4 = 4
    5 = 5
    6 = 6
    7 = 7
    8 = 8
    9 = 9
    10 = 10
    11 = 11
    12 = 12
    13 = 13
    14 = 14
    //вырезано
    59 = 59
    60 = 60
    61 = 61
    62 = 62
    63 = 63
    64 = 
    65 = 
    66 = 
    67 = 
    68 = 
    69 =
    
     
  11. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Это вообще другой скрипт, еще и с циклом, омг...
    Кстати, зачем юзать {1}?
     
  12. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,520
    Likes Received:
    401
    Reputations:
    196
    FireFenix, да и границы тут не подходят.

    Для чего мне это нужно? Для проверки айпишников на условия.

    скажем я объявляю массив

    $array= (
    "23.170.22\d",
    "145.98.21[0-9]"

    )

    потом в цикле проверяю соотвествия.

    foreach($array as $ip){
    if(preg_match('|'. $ip . '|', $_SERVER['REMOTE_ADD'])){
    $ban = true;
    }

    Но допустим есть айпишник с диапозоном
    123.45.56.[0-63] вот под него надо было мне шаблон написать.

    Пока я просто сделал массив

    123.45.56.[0-9]
    123.45.56.1[0-9]
    123.45.56.2[0-9]
    123.45.56.3[0-9]
    и тд....

    других идей нет пока..
     
  13. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    попугай
    PHP:
    for ($i=0;$i<255;$i++)
    {
    echo 
    '123.45.56.'.$i.' = ';
    if (
    preg_match'#123.45.56.(6[0-3]|[0-5][0-9](?!\d)|[1-9](?!\d))#''123.45.56.'.$i)) echo "OK\n";
    else echo 
    "FAIL\n";
    }
     
    _________________________
    1 person likes this.
  14. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,520
    Likes Received:
    401
    Reputations:
    196
    Агаа .. спасибо)
    А что означает
    ?
     
  15. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    попугай "Не цифра", так же можно использовать любой текст, которого НЕ должно быть на этом месте
     
    _________________________
  16. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,520
    Likes Received:
    401
    Reputations:
    196
    Ну "!" отрицание, я знаю.. а вопросительный знак перед восклицательным что означает?
     
  17. FireFenix

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

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

    $ips 
    = Array('192.168.1.136''10.10.10.10''173.10.1.200''10.0.0.21');

    $min 100;
    $max 140;
    $octet 3;

    for (
    $i 0$i count($ips); $i++)
    {
      
    $ip explode('.'$ips[$i]);
      
      
    $result '';

      if (
    $ip[$octet] > $max)
      {
        
    $result $ips[$i] . ' - больше ' $max;
      } elseif (
    $ip[$octet] < $min)
      {
        
    $result $ips[$i] . ' - меньше ' $min;
      } else {
        
    $result $ips[$i] . ' - нормальный';
      }
      
      echo (
    $result '<br>');
    }

    ?>
     
  18. react

    react New Member

    Joined:
    30 Jan 2009
    Messages:
    13
    Likes Received:
    0
    Reputations:
    0
    нашел на сайте шелл но из директа он не запускается а просто передает содержимое браузеру....
    создал на фрихосте сайт залил туда index.php а внем
    <img src="http://4room.surgut.info/images/graemlins/vet.php">

    и ничего не получилось ):
    как запустить шелл?
     
  19. geforse

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

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    может ошибаюсь, но мне кажется там php-инклуд нужен...
     
  20. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    geforse, бред.
    react, наверное у тебя фрейм. Опиши подробнее.
     
Thread Status:
Not open for further replies.