За последние 24 часа нас посетили 17613 программистов и 1722 робота. Сейчас ищут 932 программиста ...

помогите новичку

Тема в разделе "PHP для новичков", создана пользователем anubis, 11 фев 2010.

  1. anubis

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

    С нами с:
    28 мар 2009
    Сообщения:
    41
    Симпатии:
    0
    Нужно выбрать из файла только уникальные целые числа.

    думаю реализовать так

    preg_match_all('/\D([\d.-]+)\D/mUs', file_get_contents('file.txt'), $m);
    var_dump( array_unique($m))

    файл:
    demis
    4
    lala-blabla ! =))
    :(
    457 -1.000001
    32
    98
    2 +3.14 12637 9812 89123789
    1
    O O1 01
    1O
    1OO
    zero!
    df1000 ggg...
    -5
    105
    -2006
    wassauupp!!

    но попадает в массив [13]=> string(3) " 1O" [14]=> string(3) " 1O" [15]=> string(6) "f1000 " [16]=> string(3) "g.." [17]=> string(4) " -5 " [18]=> string(5) " 105 " [19]=> string(7) " -2006 "

    Подскажите где я ошибаюсь?
     
  2. anubis

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

    С нами с:
    28 мар 2009
    Сообщения:
    41
    Симпатии:
    0
    Или же подскажите как решить данную задачу?
     
  3. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    "-" в скобках - это спецсимвол, который задает диапазон. Поэтому его нужно экранировать, если использовать. Но в данном случае, он должен быть перед скобками, потому что минус бывает только перед числом.

    Попробуйте это:
    '/([\-]?[.\d]+[.]?[\d]*)/is'
    Для чисел модификатор U почему-то странно работает...
     
  4. anubis

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

    С нами с:
    28 мар 2009
    Сообщения:
    41
    Симпатии:
    0
    спс с этим помогло но теперь проблема с дробями [2]=> string(9) "-1.000001" [6]=> string(4) "3.14" не подскажете как с этим решить проблему я просто регулярку только учу.
    Заранее большое спасибо
     
  5. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    А что за проблема с дробями?
     
  6. anubis

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

    С нами с:
    28 мар 2009
    Сообщения:
    41
    Симпатии:
    0
    Kreker
    Просто мне нужно выбрать уникальные целые числа.
     
  7. anubis

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

    С нами с:
    28 мар 2009
    Сообщения:
    41
    Симпатии:
    0
    а мы получается отделяем числа от букв. Я только заметил и + дроби остаются я просто не представлю как решить эту задачу даже в голове =) вот решил спросить совет у мастеров возможно помогут.
     
  8. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    '/([\-]?[.\d]+)/is'
     
  9. anubis

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

    С нами с:
    28 мар 2009
    Сообщения:
    41
    Симпатии:
    0
    Kreker
    я понимаю что я назойливый но помогите плиз
    [6]=> string(4) "3.14
    [16]=> string(3) "..."
     
  10. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Пардон. Точку забыл убрать из квадратных скобок.
     
  11. anubis

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

    С нами с:
    28 мар 2009
    Сообщения:
    41
    Симпатии:
    0
    Kreker
    огромное спасибо помогло а не подскажите какую литературу или какую статью лучше прочитать по регулярным выражениям?
     
  12. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Вообще, там много тонкостей, поэтому регулярки нужно изучать постепенно - пока не поймешь логику одного, к другому лучше не переходить.
    http://phpclub.ru/detail/article/regexp_1
     
  13. anubis

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

    С нами с:
    28 мар 2009
    Сообщения:
    41
    Симпатии:
    0
    Kreker
    ок я понял спасибо большое за совет