2012-05-25 3 views
0

Я начал иметь руки с регулярными выражениями в PHP и застрял в начале.PHP регулярное выражение странное поведение

Я написал следующий блок: -

$object = "ng_amg_gt-1"; 

switch ($object) 
{ 
    case preg_match('/^ng_amg_gt-[0-9]+$/', $object): 
     echo 'first';  
     break; 

    case preg_match('/^ng_amg_gt-_cg-[0-9]+$/', $object): 
     echo 'second'; 
     break; 

} 

я думал "ng_amg_gt-1" будет соответствовать preg_match ('/^ng_amg_gt- [0-9] + $ /', $ объекта), но что интересно (анонимно), это эхо второй.

Что мне не хватает?

PS: - Это может показаться очевидным вопросом, но не получить никакого прорыва, вот почему я разместил его здесь.

Благодаря

+2

preg_match возвращает Int, вы делаете коммутатор на строка, и я даже не знаю, действительно ли это. Просто сделайте 'if (preg_match (...))' – tigrang

+0

oh НЕТ, я сделал ошибку, Извинения –

+0

Посмотрите на http://stackoverflow.com/a/4046018/372239 – Toto

ответ

2

Что мне не хватает?

Вот что вы пропустили:

$object = "ng_amg_gt-1"; 

if(preg_match('/^ng_amg_gt-[0-9]+$/', $object)) { 
    echo 'first'; 
} else if(preg_match('/^ng_amg_gt-_cg-[0-9]+$/', $object)) { 
    echo 'second'; 
} 
+0

Спасибо за ваши усилия, я получил идея от этого –

1

preg_match возвращает количество шаблона совпадает и сравнить, что в строку

+0

Я предлагаю mea-culpa для этой ошибки –

Смежные вопросы