preg_match для фамилий

usascha

Новичок
preg_match для фамилий

Всем здрасте!
Есть задача выбирать фамилии авторов, которые могут соответствовать четырём способам представления:

Делаю такое выражение с preg_match:
PHP:
"/^[А-Яа-я]* ([.\.]{1,2}|[А-Яа-я ]{1,2})/i"
Код:
Входит:                    Выходит:
Иванов Андрей Петрович       Иванов Ан
Иванов Андрей П.            Иванов Ан
Иванов Андрей           Иванов Ан
Иванов А.П.           Иванов А

После сотни вариантов уже не хватает соображалки. Пожалуйста, подсобите.
 

EvgenyPrudnikov

Новичок
1. для обозначения пробелов используй \s - понятнее будет
2. если /i, то [А-Яа-я] смысла не имеет [а-я] достаточно
3. [.\.] это вообще не понял, что ты имел в виду?
4. [А-Яа-я ]{1,2} - тоже вполне логично отбирает Ан

тебе нужно из фамили что-то вытащить, или просто валидность проверить? опять же есть люди с именами типа Ахмед Радж Оглы Берды-Мухаммедов, например, уточни что тебе нужно
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Задача в чистом виде не решается - фамилии могут состоять из 2х слов.
Если принять, что фамилия только из 1го слова, учи регулярки.
 

usascha

Новичок
EvgenyPrudnikov,
спасибо.


Вот так вроде бы заработало.
PHP:
"/^[А-Яа-я]* ((.\.){1,2}|[А-Яа-я\. ]*)/i"

Без А-Я не работает.
 

freeek

Новичок
Автор оригинала: grigori
Задача в чистом виде не решается - фамилии могут состоять из 2х слов.
Если принять, что фамилия только из 1го слова, учи регулярки.
да, логично, если нам интересна только фамилия,
а во всех 4х вариантах, это первое слово;)
 

usascha

Новичок
Задача усложнилась. К имеющимся 4-м вариантам, которые уже обрабатываются:
Код:
Входит:                    Выходит:
Иванов Андрей Петрович       Иванов Ан
Иванов Андрей П.              Иванов Ан
Иванов Андрей               Иванов Ан
Иванов А.П.                Иванов А
теперь надо добавить 5-й:

ФИО в любом из этих видов может повториться несколько раз.
При этом к каждой ФИО идёт описательная информация в скобках:
Иванов А.П. (любой текст); Иванов Андрей П. (любой текст); Иванов Андрей Петрович (любой текст)

Как мне бы казалось, выбрать только фамилии, но не текст в скобках, возможно привязавшись к точке с запятой, но пока не придумал как. Такое вообще возможно?
 
Сверху