2013-07-17 2 views
0

Я пытался выяснить это очень трудно, и я не могу вышел с раствором, У меня есть arrary строк, котораяPHP выражения preg_match

"Descripcion 1","Description 2" 

и мне нужно фильтровать по номерам, так Я подумал, что я могу использовать preg_match() и найти, когда есть ровно 1 номер 1 или два или т.д., и сделать свою логику, becouse строки перед номером может измениться, но номер не могу, я попытался с помощью

preg_match(" 1{1}","Description 1") 

, который, как предполагается, возвращает true, когда fin ds пробел, за которым следует строка «1» ровно один раз, но возвращает false.

Возможно, некоторые из вас имели больше опыта с регулярными выражениями в php и могут мне помочь.

спасибо, что заранее.

+0

Пожалуйста, пост и пример-массив данных. –

+0

Попробуйте это ''/1/"' – elclanrs

+1

fyi, '{1}' всегда не нужно в регулярном выражении. это значение по умолчанию. – ThiefMaster

ответ

2

Вы можете использовать strpos вместо preg_match!

foreach($array as $string) { 
    if(strpos($string, ' 1') !== false) { 
     //String contains " 1"!! 
    } 
} 

Это будет намного быстрее, чем регулярное выражение. Или, если номер должен быть в конце строки:

foreach($array as $string) { 
    if(substr($string, -2) == ' 1') { 
     //String ends with " 1"!! 
    } 
} 
1

Вы забыли регулярное выражение разделителей. Вместо этого используйте preg_match('/ 1/', ...).

Однако вам не нужно регулярное выражение, если вы просто хотите проверить, содержится ли строка в другой строке! См. Lars Ebert's answer.

0

Вы могли бы иметь успех, используя

if (preg_match('/(.*\s[1])/', $var, $array)) { 
     $descrip = $array[1]; 
    } else { 
     $descrip = ""; 
    } 

Я тестировал выше регулярное выражение на 3 отдельных строк значений Descripcion 1, thisIsAnother 1, andOneMore 1. Каждый были найдены, чтобы быть правдой выражением и были сохранены в группа 1.

объяснение кода регулярного выражения:
() соответствуют регулярному выражению между круглыми скобками и захватить матч в число обратной ссылки 1.
* Соответствуем любой символ, который не символ разрыва строки. быть твин нулю, и столько раз, сколько это возможно (жадный)
\ S Match один символ пробела (пробел, табуляция, разрыв строки)
[1] Матч символ 1

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