За последние 24 часа нас посетили 19773 программиста и 1691 робот. Сейчас ищут 1836 программистов ...

Подскажите фунцию

Тема в разделе "Регулярные выражения", создана пользователем energy2008, 17 июн 2009.

  1. energy2008

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

    С нами с:
    24 июн 2008
    Сообщения:
    47
    Симпатии:
    0
    какой функцией можно найти число в строке задействовав при этом минимум кода?

    пример строки "ИФНС №28 по г. Москве"

    просто нужно выцепить число.
     
  2. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    PHP:
    1. <?
    2.  
    3. if(preg_match('/[0-9]+?/s', $string, $number)) {
    4.     echo 'Found: '.$number[1];
    5. }
    6.  
    7. ?>
     
  3. energy2008

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

    С нами с:
    24 июн 2008
    Сообщения:
    47
    Симпатии:
    0
    не работает
     
  4. energy2008

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

    С нами с:
    24 июн 2008
    Сообщения:
    47
    Симпатии:
    0
    Notice: Undefined offset: 1 in Z:\home\gotovka.ru\www\index.php on line 200
    Found:
     
  5. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    А почему бы самостоятельно не поправить код?

    PHP:
    1. <?
    2.  
    3. if(preg_match('/([0-9]+)/s', $string, $number)) {
    4.     echo 'Found: '.$number[1];
    5. }
    6.  
    7. ?>
     
  6. energy2008

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

    С нами с:
    24 июн 2008
    Сообщения:
    47
    Симпатии:
    0
    PHP:
    1. <?      if(preg_match('/(\d+)/s',  $string, $number)) {
    2.             echo 'Found: '.$number[1];
    3.   }?>
     
  7. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    И какая разница?
     
  8. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    PHP:
    1. <?
    2.  
    3. if(preg_match('/([987654321]+)/s', $string, $number)) {
    4.     echo 'Found: '.$number[1];
    5. }
    6.  
    7. if(preg_match('/([[:digit:]]+)/s', $string, $number)) {
    8.     echo 'Found: '.$number[1];
    9. }
    10.  
    11. if(preg_match('/(\d+)/s', $string, $number)) {
    12.     echo 'Found: '.$number[1];
    13. }
    14.  
    15. if(preg_match('/([0-9]+)/s', $string, $number)) {
    16.     echo 'Found: '.$number[1];
    17. }
    18.  
    19. ?>
    Собственно вариантов много, какая разница-то?
    Вы попросили подсказать, я подсказал так, как бы написал я.
     
  9. energy2008

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

    С нами с:
    24 июн 2008
    Сообщения:
    47
    Симпатии:
    0
    спасибо вам, разницы никакой, но почему-то заработал лишь второй вариант

    PHP:
    1.  <?        if(preg_match('/(\d+)/s',  $string, $number)) {
    2.               echo 'Found: '.$number[1];
    3. .    }?>
     
  10. PHP:
    1. # <?
    2. #  
    3. #  if(preg_match('/([987654321]+)/s', $string, $number)) {
    4. #      echo 'Found: '.$number[1];
    5. #  }
    6. #  
    7. #  if(preg_match('/([[:digit:]]+)/s', $string, $number)) {
    8. #      echo 'Found: '.$number[1];
    9. #  }
    10. #  
    11. #  if(preg_match('/(\d+)/s', $string, $number)) {
    12. #      echo 'Found: '.$number[1];
    13. #  }
    14. #  
    15. #  if(preg_match('/([0-9]+)/s', $string, $number)) {
    16. #      echo 'Found: '.$number[1];
    17. #  }
    18. #  
    19. #  ?>
    а зачем так можно проще
    PHP:
    1. <?php
    2. if(preg_match('\/(\s+))\/s', $founded)) {
    3. echo "$founded";
    4. $zenumber = '1';
    5. .$number[$zenubmer];
    6. ?>
     
  11. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    alex-coder-coging-php
    Бугага, даже не знаю, смеяться или плакать.
    Если честно, хочется плакать.

    Во-первых, эти что за танцы с бубном вокруг неправильной регулярки, обрамления переменной ненужными кавычками, объявленный индекс?
    И что это, в конце концов, за неправильное слово founded?
    Мальчик, ты умственно отсталый в самом прямом смысле этого слова?
    Али ты ещё ребенок лет 12?
    Ну честное слово, развитие 12 летнего ребенка у человека, даже младше ...
     
  12. TheShock

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

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    Вообще, я согласен с Apple'ом
     
  13. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    правельный вариант
    PHP:
    1. <?
    2. for($i=0,$c=strlen($str);$i<$c;$i++){
    3.     if(is_numeric($str[$i])) print $str[$i];
    4. }
    5. ?>
     
  14. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Mr.M.I.T.
    Я хотел узнавать по ASCII ...
     
  15. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Mr.M.I.T.
    Если в строке два числа, то они склеиваются.
    Например из строки "С 1987 года я 5 раз выезжал за границу." получим "19875".

    Кстати, все эти методы работают только с целыми неотрицательными числами. :)