Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите с ereg (регулярные выражения)

285
19 мая 2005 года
Romik
479 / / 24.11.2002
Мне нужно обработать файл файл, в нём могут быть переменные вида #VarName#, пишу:

 
Код:
ereg("(\\#[A-Za-z0-9]+\\#)+",$this->FileData,$this->Items)


в массив $this->Items попадает дважды #PlrNm#, хотя в файле есть только эта переменная, причём только один раз. Значит дело в регулярном выражении. В чём я ошибся и как это исправить?
285
20 мая 2005 года
Romik
479 / / 24.11.2002
Oops, я понял в чём дело, просто help давно смотрел, в 0 элементе хранится полная строка соответствия шаблону (ну вообщем какбы там ни было, смотреть нужно начиная с 1 элемента) Но тут возник другой вопрос, я добавил в файл ещё одну переменную #VarName1# но он по прежненему находит только #VarName#, может ereg плохо подходит для данной задачи? или я не правильно написал регулярное выражени?
285
20 мая 2005 года
Romik
479 / / 24.11.2002
Всем огромное спасибо (хотя бы за то что смотрели :) ), но я разобрался сам (ночь пролетела незаметно)

Вобщем я написал следущее:
Код:
if(preg_match_all("/\#[A-Za-z0-9]+\#/",$this->FileData,$this->Items,PREG_PATTERN_ORDER)){
/*
* с флагом PREG_PATTERN_ORDER массив $this->Items получается вида
* array([0]=> array("#VarName1#","#VarName2#",...,"#VarName3#"))
* что впринципе меня очень устраивает
*/


/* Далее удаляем все дубликаты из массива */
 $this->Items=array_unique($this->Items[0]);
/*
* Но так как при удалении дубликатов индексы не изменяются
* удобно использовать ключи
 */

 $keys=array_keys($this->Items);
 $ResData=$this->Items[$keys[0]];

//...

}
287
20 мая 2005 года
Shiizoo
958 / / 14.03.2004
До php 4.3.10/11 array_splice/slice помогает выстраиванивать индексов по порядку.

На код:

 
Код:
print_r($a = array(0=>0,1=>1,5=>2,10=>3));
print "\n";
/**
*
* array array_slice(array,X[,Y]) берет из массивы элементы начиная * с X [и заканчивая Y] и выдаёт результат-массив
*
**/
print_r(array_slice($a,0));


Получаем вывод:

 
Код:
Array ( [0] => 0 [1] => 1 [5] => 2 [10] => 3 )
Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 )


не-целочисленные ключи не сортируются.

ps: далее скорее всего так же работает, но не ручаюсь;)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог