Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > preg_match_all и шаблон - неправильная работа


Автор: Frozen_Coyote 6.2.2013, 12:35
Проблема, господа


Код


echo $params = "/ru/news/hangar/";
        
preg_match_all("|/(.+?)/|uis", $params, $matches);        
        
for( $i = 0; $i < count($matches[0]); $i++)
{
echo $matches[1][$i];
}



по задумке должно выводиться все три слова (ru news hangar) между слэшами, по факту выводится ru и hangar. Что не так? 

Автор: ksnk 6.2.2013, 13:13
Код

preg_match_all("|(?<=/)(.+?)(?=/)|uis", $params, $matches);        


http://www.php.net/manual/en/regexp.reference.assertions.php

P.S. Вопросительный знак случайно потерялся

Автор: skyboy 6.2.2013, 13:42
поясню.
после совпадения с "/ru/" поиск дальше продолжится с "n"
проверки, о которых говорит ksnk, не перемещают "внутренний указатель", потому после совпадения с /ru/ и запоминания ru, проверка продолжится с "/"

Автор: Frozen_Coyote 6.2.2013, 14:37
Все понял, спасибо парни

Автор: Aliance 6.2.2013, 14:58
Если пример реальный, чем не подходит explode?

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