|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
15.12.2011, 19:31 | #1 |
Пользователь
Регистрация: 15.12.2011
Сообщений: 96
|
работа со строками
Здравствуйте!
Требуется: Найти определения функций в исходном коде на языке PHP. Определения методов классов проигнорировать. смутно соображая получилось такое Код:
|
15.12.2011, 20:34 | #2 |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
|
15.12.2011, 20:56 | #3 |
Пользователь
Регистрация: 15.12.2011
Сообщений: 96
|
Найти определения функций в исходном коде на языке PHP.
Определения методов классов проигнорировать. То есть нужно выбрать определения функций а определения методов проигнорировать. |
15.12.2011, 20:57 | #4 |
Пользователь
Регистрация: 15.12.2011
Сообщений: 96
|
на худой конец если знаешь как отобрать названия функций, не отбирая названия методов, то буду признателен хотя бы за это))
|
15.12.2011, 21:10 | #5 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
Цитата:
Но ваша задача, скорее всего, больше направлена именно на парсинг текстовой информации - тут кроме построчного перебора кода ничего и не придумаешь... |
|
15.12.2011, 21:28 | #6 |
Пользователь
Регистрация: 15.12.2011
Сообщений: 96
|
построчный перебор через explode ( string separator, string string [, int limit] )?????!!!!
А как отличить состоит функция в классе или нет???) |
15.12.2011, 21:49 | #7 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
Цитата:
- читаем файл построчно в массив, при помощи file(). - проходим по массиву (по строкам файла) - попалось слово function - получаем имя функции (от слова function до первого знака "{", или до конца строки(если функция оформлена по стандарту K&R)), имя очищаем от пробелов trim. - далее получаем тело найденной функции, фиксируя по пути встречающиеся внутри функции комбинации кода, заключенные в "{}"(проверяем парность этих скобок), пока не находим закрывающую скобку функции "}" - всё, функция считана. - если попалось слово class - поступаем практически аналогично, ищем открывающую скобку класса "{", дальше всё проверяем просто на парность скобок "{}"(не ищем function), пока не находим закрывающую скобку класса "}" - всё, класс прошли. - и так весь файл. - результаты парсинга заносим в массив. Вот как-то так можно всё распарсить - ничего сложного, вобщем-то... |
|
15.12.2011, 22:01 | #8 |
Пользователь
Регистрация: 15.12.2011
Сообщений: 96
|
|
16.12.2011, 02:31 | #9 |
Пользователь
Регистрация: 15.12.2011
Сообщений: 96
|
Мозг взорвался, результата нет.....(
Код:
|
17.12.2011, 02:15 | #10 |
Пользователь
Регистрация: 25.07.2010
Сообщений: 12
|
Если предположить, что на одной линии может быть только одна дикларация ф-ии и на линии с закрывающей скобкой для ф-ии, справа от этой скобки тоже ниче нет. И если не учитывать имена ф-й / переменных типа "someclassSmth", "somefunctionToDoSmth", то можно как-то так:
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
работа со строками | asyat | Помощь студентам | 4 | 10.03.2011 22:35 |
Работа со строками | gufon | Общие вопросы Delphi | 7 | 04.03.2011 22:59 |
Работа с матрицами (норма матрицы, работа со строками) | Neitrosha | Помощь студентам | 1 | 26.11.2010 20:19 |
работа со строками | mansp | Помощь студентам | 0 | 23.11.2010 21:02 |
Работа со строками | Дырдин | Общие вопросы C/C++ | 12 | 24.10.2009 19:47 |