2012-02-20 66 views
0

在本教程中Php regex tutorial的X修改的代碼給我下面的錯誤:這個PHP Regex代碼有什麼問題?

 
Warning: preg_match() [function.preg-match]: Unknown modifier ' ' in C:\xampp\htdocs\validation\test.php on line 16 
Pattern not found 

這有什麼錯呢?

<?php 
// create a string 
$string = 'sex'."\n".'at'."\n".'noon'."\n".'taxes'."\n"; 

// create our regex using comments and store the regex 
// in a variable to be used with preg_match 
$regex =" 
/ # opening double quote 
^  # caret means beginning of the string 
noon # the pattern to match 
/imx 
"; 

// look for a match 
if(preg_match($regex, $string)) 
     { 
     echo 'Pattern Found'; 
     } 
else 
     { 
     echo 'Pattern not found'; 
     } 
?> 

回答

2

你有修飾語額外的換行符,因爲終止引號是imx後一個新行,這就是爲什麼你看到未知的修飾' '

嘗試將其更改爲:

$regex =" 
/ # opening double quote 
^  # caret means beginning of the string 
noon # the pattern to match 
/imx"; // move "; to same line as /imx 
+0

謝謝,它解決了它,但爲什麼會產生一個錯誤? – siaooo 2012-02-20 07:13:03

+0

回波 '你好
' ; 這不會產生任何錯誤,結尾引號'和分號;在換行 – siaooo 2012-02-20 07:13:20

+1

這個錯誤是由於PHP將regex修飾符視爲'imx \ n',並在最後帶有文字換行符。換行符不是有效的修飾符。這很棘手,因爲PHP不會在錯誤消息中輸出換行符,而只是看到一個空格''''。 – drew010 2012-02-20 07:19:37

1

PHP給你的警告信息出現錯誤的原因:未知的修飾' '

顯然,你不能在你的模式結束符/後,在修改器列表空白。您可以用trim()功能刪除此空白:

if (preg_match(trim($regex), $string)) 
// ... 
+0

這沒有解決辦法;這些空白不應該放在那裏。 @ drew010有正確的答案。 – 2012-02-20 07:18:59