我有這樣的正則表達式的字符串,我從網站拉電子郵件從一個文件有:如何使用長正則表達式的字符串在PHP
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
伊夫在正則表達式好友(正則表達式測試軟件)測試,它的工作原理!
當我從正則表達式好友複製和粘貼正則表達式到我的PHP文件,我必須逃脫2 "
字符,使正則表達式在PHP中形成一個有效的字符串。
在PHP我用這樣的:
$file = file_get_contents(/* URL TO GET */);
$email_pattern = "(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])";
$matches = array();
if (preg_match_all ($email_pattern, $file, $matches))
{
echo print_r($matches, true);
}
,但我得到這樣的警告!?!?
Warning: preg_match_all() [function.preg-match-all]: Unknown modifier '@'
但是,這個正則表達式在正則表達式中的作用?
我在哪裏出錯?
我複製並粘貼您的回答並得到此錯誤:警告:preg_match_all()[function.preg-match-all]:未知修飾符'='。但等號已經逃脫了?我也用preg_quote來自動轉義正則表達式特殊字符,但他們我得到了錯誤:警告:preg_match_all()[function.preg-match-all]:未知修飾符'\' – 2012-02-10 14:56:18
複製並粘貼我的anwser的第1步,但沒有你在步驟2中提到了你逃跑嗎? – FMaz008 2012-02-10 15:06:31
虐待現在,\成爲\\和$成爲\ $,但我還有什麼應該知道的?網上有什麼清單嗎? – 2012-02-10 15:09:06