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

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)).
Никак не могу понять почему так происходит. Вроде функции эти идентичны по документации. Или просто я туплю :(
 

Dovg

Продвинутый новичок
Вроде функции эти идентичны по документации.
не идентичные

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:

опоздал...
 

Андрейка

Senior pomidor developer
Dovg
ну ты бы хоть мысль как нибудь выразил яснее.. а то нам с задних рядов непонятно чем они не идентичные
 

Dovg

Продвинутый новичок
Андрейка
:)
1. разное число обязательных аргументов
2. на выходе разное
 

vitalaw

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