2016-03-06 103 views
0

我需要一個簡單的襯墊來檢查帶有 - ,_和的字母數字字符。 (用於文件名),用作if條件。PHP oneliner檢查字母數字+ - ,_和

我嘗試了幾件事情,包括ctype_allnum和preg匹配,但我無法讓它工作。例如:

if(!ctype_alnum(preg_replace("-_\.", "", "should_pas-s.html"))) 
{ sth; } 

我知道ctype_alnum,但這需要外部(不在同一行)陣列,因此這將複雜的事情。 (有許多條件需要檢查。)

+0

什麼你的意思是「我無法工作」?結果是什麼?你是什​​麼意思'ctype_alnum [...]需要外部數組'?它接受一個字符串並返回一個布爾值。 –

+0

我想把所有東西都放進一個喜歡適合IF的工作中。用這個: '$ a ='my_filename01.html'; $ b = array(' - ','_','。'); if(!ctype_alnum(str_replace($ b,'',$ a))){ echo'not ok'; } else {echo「all fine」;}' 它讓事情變得複雜。 – mrmut

+0

好吧,有什麼不適合你的嘗試'ctype_alnum(preg_replace(「-_。」,「」,「should_pas-s.html」)''preg_replace'正在做你期望的事情嗎?'ctype_alnum' ? –

回答

1

您遇到的問題是使用preg_replace。文檔告訴了一下模式應該是什麼樣子。

您需要在您的正則表達式中使用開始和結束分隔符。例如:

preg_replace("#-_\.#", "", "should_pas-s.html") 

所以在你的情況下,代碼應該是:

if(!ctype_alnum(preg_replace("#-_\.#", "", "should_pas-s.html"))) 

這是在這個問題已經回答: Warning: preg_replace(): No ending delimiter '/' found

或者這一個: What Delimiter to use for preg_replace in PHP (replace working outside of PHP but not inside)

+0

非常感謝,我正在尋找這個錯誤,但是沒有發現任何問題。 – mrmut