Нужно выбрать из файла только уникальные целые числа. думаю реализовать так 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 " Подскажите где я ошибаюсь?
"-" в скобках - это спецсимвол, который задает диапазон. Поэтому его нужно экранировать, если использовать. Но в данном случае, он должен быть перед скобками, потому что минус бывает только перед числом. Попробуйте это: '/([\-]?[.\d]+[.]?[\d]*)/is' Для чисел модификатор U почему-то странно работает...
спс с этим помогло но теперь проблема с дробями [2]=> string(9) "-1.000001" [6]=> string(4) "3.14" не подскажете как с этим решить проблему я просто регулярку только учу. Заранее большое спасибо
а мы получается отделяем числа от букв. Я только заметил и + дроби остаются я просто не представлю как решить эту задачу даже в голове =) вот решил спросить совет у мастеров возможно помогут.
Kreker огромное спасибо помогло а не подскажите какую литературу или какую статью лучше прочитать по регулярным выражениям?
Вообще, там много тонкостей, поэтому регулярки нужно изучать постепенно - пока не поймешь логику одного, к другому лучше не переходить. http://phpclub.ru/detail/article/regexp_1