2015-05-07 81 views
1

我在查看是否有任何針/cgi-bin /css etc在乾草堆$dir中。在PHP中用乾草堆編寫strpos的較短方式

爲了檢查多根針,我必須在每個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