2015-05-07 2 views
1

Я проверяю, есть ли какая-либо из игл /cgi-bin /css etc в стоге сена $dir.Более короткий способ писать strpos с несколькими иглами в стоге сена в PHP

Чтобы проверить несколько игл, я должен написать || после каждого strpos().

Я видел здесь некоторые другие темы, но никто из них не показал самый простой код.

Я нахожусь под впечатлением, что, насколько простота и свернутом кода, это лучший способ идти о сравнении малое количество (10 или меньше) нескольких игл в стоге сена с StrPos.

Если вы знаете более короткий и более предпочтительный способ сделать это, пожалуйста, оставьте ответ ниже.

Но без особо сложного кода. Массив будет в порядке, но сохраните его простым и коротким.

Код:

if (strpos($dir, '/cgi-bin') || strpos($dir, '/css') || strpos($dir, '/images') || strpos($dir, '/includes') || strpos($dir, '/test') !== false) 
continue; 

ответ

2

Используйте регулярное выражение:

if (preg_match('#/(?:cgi-bin|css|images|includes|test)#', $dir)) { 
    continue; 
} 
+0

Это абсолютно все! Но что означает '?:' Перед иглой 'cgi-bin'? – Mike

+0

Также я могу просто написать это, как это, вместо фигурных скобок? 'if (preg_match ('#/(?: cgi-bin | css | images | includes | test) #', $ dir)) continue;' – Mike

+0

'?:' После левой скобки делает группу не захватывающей: http://stackoverflow.com/questions/3512471/non-capturing-group. Вы можете написать его без фигурных скобок, но я не рекомендую: http://stackoverflow.com/questions/359732/why-is-it-considered-a-bad-practice-to-omit-curly-braces ? LQ = 1 – Barmar