|
|
|
| Прошу Вас мне помочь в следующей задаче:
Иметя строка поиска:
$search="Иванов Иван (1) еще Петров (2) и Сидоров (3)";
|
для каждой фамилии число уникально.
и массив:
$array[0][0]="Иванов";
$array[0][1]=1;
$array[1][0]="Сидоров";
$array[1][1]=4;
$array[2][0]="Смирнов";
$array[2][1]=2;
|
Необходимо извлечь из строки поиска элементы массива (желательно цифры), где фамилия с числом соответствует элементам объявленного массива.
Хотел сделать при помощи функции ereg(), но регулярное выражение не удается написать.
Подскажите, пожалуйста, как составить регулярное выражение. С зарания спасибо. | |
|
|
|
|
|
|
|
для: Ursus
(02.07.2007 в 23:40)
| | "Иванов Иван (1) еще Петров (2) и Сидоров (3)" - откуда эта строка?
Почему у Петрова и Сидорова нет имен?
как можно определить что "еще" - это не имя Петрова.. ? | |
|
|
|
|
|
|
|
для: kasmanaft
(03.07.2007 в 06:30)
| | строка дана в PHP-сценарии.
имен у Петрова с Сидоровым нет для усложнения задачи. Слово 'еще' добавленно по этой же причине. Вообще, имена выбирать не надо.
Я хотел постепенно составить регулярное. Сначала составлял выражение для поиска одной фамилии.
$pattern="Петров.*\(1\)";
ereg($pattern,$search,$ff);
print_r($ff);
|
но и это простое выражение, почему-то не работало. | |
|
|
|
|
|
|
|
для: Ursus
(03.07.2007 в 09:19)
| | > Вообще, имена выбирать не надо.
То есть мы знаем что "Петров, Сидоров, Пупкин и тд и тп" - это фамилии ?
> но и это простое выражение, почему-то не работало.
Потому, что после "Петров" у Вас в строке нет "(1)"
ЗЫЖ я все-таки не пойму что нужно сделать... Ищем в строке фамилию, такую же ищем в массиве и выбираем из массива $array[..][1] ? (число то есть) ... А для чего нужны скобки с цифрами в строке поиска?
>> где фамилия с числом соответствует элементам объявленного массива.
Фамилия соответствует или цифра в скобках? Если цифра, то для чего вообще тогда нужна фамилия? | |
|
|
|
|
|
|
|
для: kasmanaft
(03.07.2007 в 09:28)
| | Необходимо из элементов массива array составить регулярное выражение. Для меня не проблема составить из элементов регулярное выражение. Для меня проблема - определить как будет выглядить это регулярное выражение.
>> Вообще, имена выбирать не надо.
>То есть мы знаем что "Петров, Сидоров, Пупкин и тд и тп" - это фамилии ?
>
Известна фамилия и номер (я их записал в виде $array[$i][0] и $array[$i][1])
Я делал $pattern="Иванов.*\(1\)"; Т.е. известная нам фамилия + некоторые символы + известный номер в скобках. Повторюсь, что и это простое регулярное выражение у меня не работает. Далее хотел регулярное выражения усложнить, добавив в него еще фамилии с номерами. Но не знаю как реализовать логическое ИЛИ.
>> но и это простое выражение, почему-то не работало.
>Потому, что после "Петров" у Вас в строке нет "(1)"
>
Прошу прощения, описался. Там Иванов должен быть.
>ЗЫЖ я все-таки не пойму что нужно сделать... Ищем в строке фамилию, такую же ищем в массиве и выбираем из массива $array[..][1] ? (число то есть) ... А для чего нужны скобки с цифрами в строке поиска?
>
В строке поиска могут встретиться еще цифры без скобок.
>>> где фамилия с числом соответствует элементам объявленного массива.
>Фамилия соответствует или цифра в скобках? Если цифра, то для чего вообще тогда нужна фамилия?
Каждому элементу соответствует одна фамилия и один номер. | |
|
|
|
|
|
|
|
для: Ursus
(03.07.2007 в 09:19)
| |
$pattern="Иванов.*\(1\)";
ereg($pattern,$search,$ff);
print_r($ff);
|
Опа... заработало... Скажите, пожалуйста, как нужно изменить $pattern, что бы он искал еще какие-нибудь фамилии с номером. Т.е. как можно реализовать логическое "ИЛИ"? | |
|
|
|
|
|
|
|
для: Ursus
(02.07.2007 в 23:40)
| | Что-то не очень понятно... Необходимо сформировать массив или он уже имеется заранее? | |
|
|
|
|
|
|
|
для: cheops
(03.07.2007 в 09:26)
| | Массив $array дан. В принципе, я его написал, что бы показать, что элементу соответствует фамилия и номер. Необходимо определить какие элементы входят в строку "search".Мне на данном этапе решения задачи ответ через элементы массива $array не требуется. У меня проблема в том, что я не могу составить регулярное выражение. | |
|
|
|
|
|
|
|
для: Ursus
(02.07.2007 в 23:40)
| | Всем спасибо. Нашел решение. | |
|
|
|