PHP MySQL Name Оценка системы разделения - PullRequest
0 голосов
/ 20 марта 2012

У меня есть сайт, на котором перечислены спортивные результаты.В настоящее время он работает следующим образом:

Имя Фамилия 1-0 Имя Фамилия

Он взрывается по пробелам, а затем по третьему (содержит оценки) на основе -.

Проблема в том, что он не поддерживает имена, содержащие более 2 слов.Если я взорвусь, используя - во-первых, он не будет поддерживать имена с - там.Результаты добавляются в текстовое поле, потому что мне нужно добавить тысячи, поэтому я не хочу создавать несколько полей для ввода данных, поскольку в настоящее время я могу быстро добавлять совпадения, перечисляя по одному результату на строку.У кого-нибудь есть советы, как сделать систему как многословной, так и нечувствительной к специальным символам?Может быть, есть способ разделить, когда он встречает число, затем выбрать первый чанк в качестве имени, последний в качестве этого игрока, а остальные в качестве фамилии?

1 Ответ

0 голосов
/ 20 марта 2012

Я не знаю, можно ли научить простой команде синтаксического анализа или даже регулярному выражению делать то, что вы хотите. Некоторые случаи всегда будут неоднозначными. Например, если у вас есть имена «Mary Ann Steiner» и «Constantin Van Dyke», шаблоны точно такие же, но один должен быть разделен (2/1), а другой должен быть разделен (1/2).

Возможно, вы могли бы найти библиотеку, которая знает, как делать обоснованные догадки, основываясь на огромном словаре известных имен, но при этом не может ...

Я думаю, что в этом случае вам нужен человеческий мозг, который вводит данные, чтобы принимать некоторые решения, и указывать их во время ввода данных. По моему опыту, использование нескольких полей не так уж и медленно, если вы перемещаетесь с помощью клавиши табуляции вместо того, чтобы перемещаться. Вы также можете ввести данные, используя собственный разделитель, например:

Mary Ann,Steiner,2-3
Constantin,Van Dyke,4-2

Тогда вы запустили бы что-нибудь, что взорвало бы эти строки на основе "," и добавило бы элементы в вашу базу данных.

Если вы копируете / вставляете или извлекаете данные с внешнего сайта, другим вариантом будет просто разбить каждую строку, используя метод, который вы используете в настоящее время. Это должно работать для большинства записей, и если это не сработает, это будет очевидно - полученная запись будет иметь слишком много элементов. Вы можете иметь свой сценарий помечать только эти записи для вмешательства человека.

...