正則表達式PHP代碼
// If url matches regex
$regex = "/^(/upload/temporary/)[0-9]{4}_[0-9]{2}_[0-9]{2}_[A-Za-z0-9._ /-]+.[A-z]{2,4}$/";
if (preg_match($regex, $this->value)) {
$this->valid();
}
錯誤消息
Warning: preg_match() [<a href='function.preg-match'>function.preg-match</a>]: Unknown modifier 'p' in C:\Apache\www\profiletwist\lib\php\form\url.php on line 41
Call Stack
# Time Memory Function Location
1 0.0079 440016 {main}() ..\new.php:0
2 0.0964 667832 form->validate() ..\new.php:60
3 0.0968 668248 form_URL->validateUploadURL() ..\form.php:372
4 0.0969 668400 preg_match () ..\url.php:41
Variables in local scope (#3)
$regex =
string '/^(/upload/temporary/)[0-9]{4}_[0-9]{2}_[0-9]{2}_[A-Za-z0-9._ /-]+.[A-z]{2,4}$/' (length=79)
問題
如何解決這個 「未知的修飾詞」 錯誤的正則表達式不會出現?PHP正則表達式 「未知改性劑P」
最後,我想正則表達式,使得確保文本輸入相匹配:
"/upload/temporary/####_##_##_[A-z0-9 _-]+ "." [a-z]{3}
這是一個文件名的目標。開始不會改變,最後一部分可以是一個隨機哈希,隨後是任意擴展。進一步的處理是在正則表達式之後完成的,但這是第一個測試。
謝謝!
而且有可能[+100重複](http://stackoverflow.com/search?page=3&tab=newest&q=%5bphp%5d%20%5bregex %5D%圖20是%3aquestion%20closed%3ano%20unknown%20modifier)。基本上你可以使用其他分隔符或(最佳實踐)使用[**'preg_quote()'**](http://php.net/preg-quote)。 – HamZa
@HamZa當你真正想寫一個正則表達式(而不僅僅是匹配一大堆字面文本)時,最佳實踐如何?我認爲選擇其他分隔符是最佳實踐。 –
@ProfileTwist,因爲沒有人將它包含在他們的答案中,所以這裏是官方的[PHP中分隔符的參考](http://www.php.net/manual/en/regexp.reference.delimiters.php)。 –