Вопрос по регулярным выражениям

  • Автор темы Автор темы vitalaw
  • Дата начала Дата начала

vitalaw

Новичок
Вопрос по регулярным выражениям

Есть такой тип строк:
PHP:
$string = "/shop/goods/mobile/detail-2986?phrase_id=12174";

И есть код преобразования этих строк:
PHP:
if (preg_match('/detail-[0-9]*\?phrase_id=[0-9]*/', $string)) {
    $string = preg_replace('/detail-([0-9]*)\?phrase_id=[0-9]*/', 'detail-$1', $string);
    $string .= '/';
}

Так вот - если мы заменяем в первой строчке preg_match на preg_match_all, то условие if не срабатывает, а функция preg_match_all возвращает ошибку (bool(false)).
Никак не могу понять почему так происходит. Вроде функции эти идентичны по документации. Или просто я туплю :(
 
Вроде функции эти идентичны по документации.
не идентичные

mixed preg_match ( string pattern, string subject [, array &matches [, int flags [, int offset]]] )
int preg_match_all ( string pattern, string subject, array &matches [, int flags [, int offset]] )

-~{}~ 26.01.07 14:24:

опоздал...
 
Dovg
ну ты бы хоть мысль как нибудь выразил яснее.. а то нам с задних рядов непонятно чем они не идентичные
 
Андрейка
:)
1. разное число обязательных аргументов
2. на выходе разное
 
Ну мне вообщето просто количество совпадений надо узнать, а где и как - не важно.
Всетаки я ступил :), просто не задал массив для результатов и поэтому preg_match_all выдавал ошибку. Спасибо что подсказали.
 
Сверху