2014-09-29 27 views
2

我剛剛遇到了有關Colin Verot's upload script上載類的此問題。警告:preg_match()[function.preg-match]:編譯失敗:偏移量爲7的字符類中的無效範圍

/^([\.-\w]+)\/([\.-\w]+)(.*)$/i 

我有如下逃脫,但我的preg_match/preg_replace函數的知識是有限的一點,只是想確認正確的「修復」。

/^([\.\-\w]+)\/([\.\-\w]+)(.*)$/i 

行號拋出的問題是2899和3012之間

+0

您的輸入和預期輸出是什麼? – 2014-09-29 15:42:45

+0

代碼是: if(preg_match(「/ ^([\ .- \ w] +)\ /([\ .- \ w] +)(。*)$/i」,$ this-> ($ */$($)/ $($)/ $($))。 $ 2',$ this-> file_src_mime); $ this-> log。=' -  驗證爲''的MIME。 $ this-> file_src_mime。 '
';其他{ } else {this-> file_src_mime = null; } 看起來像它檢查MIME類型? – 2014-09-29 15:50:11

回答

2

你的解決方法是正確的。 [\.-\w]是一個字符類,連字符試圖做一個範圍(即[0-9][a-z])。 \w已經是[a-zA-Z0-9_]的簡寫了,所以你不能說從.\w的範圍。不過,我想使字符類是這樣的:

[\w.-] 

的期間並不需要進行轉義,因爲它不具有字符類中有特殊的含義(外面需要轉義,因爲它意味着「任何字符」)。連字符也不需要轉義,只要它是一個字符類的第一個或最後一個字符(即不是範圍)即可。

+1

我剛剛通過並取代那些preg和所有似乎都很好,謝謝你的指點山姆,非常感謝! – 2014-09-29 16:04:17

相關問題