Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > несколько совпадений в ereg()


Автор: Гость_Жека 18.4.2005, 03:44
помогите плз разобраться с функцией ereg
есть строка, например $str = 'asdf ahjf'
мне нужно достать из нее оба совпадения с выражением, например 'a..f'
пишу ereg("a..f", $str, $matches);
и вот теперь мне надо вывести как первое, так и второе совпадение...
как это сделать?? smile

Автор: IZ@TOP 18.4.2005, 08:08
Код

$str = "string commerce regexp";
eregi("([c][r][m])", $str, $m);
print_r($m);

Так тебе нужно?

Автор: Гость_Жека 18.4.2005, 09:46
я не совсем понял ответ... что такое "([c][r][m])"
у меня оно ничего не ищет...

а вот, что мне надо:
Код

$str = "ctrine commerce regexp";
eregi("(c[[:alnum:]]+e)", $str, $m);
print_r($m);


результат: Array ( [0] => ctrine [1] => ctrine )
т.е. я получаю только первое совпадение...
а мне нужно знать ещй и второе
т.е. я на выходе хочу иметь массив типа
Array ( [0] => ctrine [1] => commerce )

Автор: Mal Hack 18.4.2005, 13:30
Цитата
мне нужно достать из нее оба совпадения с выражением, например 'a..f'

Предланаю вариант через preg.
Код
$str = 'asdf ahjf'
preg_match_all( "#a(.+?)f#" , $str , $matches );
print_r( $matches );

Если надо учесть, что a и f могут быть заглавными, то после второго # поставь i.

Автор: Гость_Жека 18.4.2005, 14:59
Спасибо ОГРОМНОЕ!
это именно то, что нужно было! smile smile smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)