我用波紋管代碼搜索和查找,如果HTTP是包括在$ URL地址的用戶的preg_match()的簡單問題進入約在PHP
if (!preg_match("/http:///", $user_website)
,但我得到這個錯誤
Warning: preg_match() [function.preg-match]: Unknown modifier '/' in
我知道它的http //但是如何工作圍繞這個!
我用波紋管代碼搜索和查找,如果HTTP是包括在$ URL地址的用戶的preg_match()的簡單問題進入約在PHP
if (!preg_match("/http:///", $user_website)
,但我得到這個錯誤
Warning: preg_match() [function.preg-match]: Unknown modifier '/' in
我知道它的http //但是如何工作圍繞這個!
而不必爲躲避URL每/
正則表達式通常很有用preg_*
代替字符標記模式的開始/結束的。
if (!preg_match("#http://#", $user_website)
轉義/
字符與\
個字符。
您需要轉義文字字符。在正斜槓前放置一個反斜槓。
http://
成爲http:\/\/
if (!preg_match("/http:\/\//", $user_website)
可以逃脫斜線像其他的答案提及,或者您可以使用不同的分隔符,最好你不會在你的正則表達式使用的字符:
preg_match('~http://~', ...)
preg_match('!http://!', ...)
而且你真的不這需要正則表達式。字符串匹配應該是足夠了:
if (strpos($user_website, 'http://') !== false) {
// do something
}
參見:strpos()
+1提strpos – 2010-08-17 06:03:36
如果已經沒有parse_url函數,將會是+1 – shylent 2010-08-17 06:08:24
@shy它似乎並不像OP想要解析URL – NullUserException 2010-08-17 06:10:53
您使用/
分隔符的圖案被發現爲好。在這種情況下,您可以逃脫分隔符的格局:
if (!preg_match("/http:\/\//", $user_website)
,或者你可以選擇不同的分隔符。這將保持清潔模式和短:
if (!preg_match("#http://#", $user_website)
當然,你必須做
$parts = parse_url($my_url);
$parts['scheme']
然後將包含URL方案(可能是 'HTTP')。
+1提供正確的工具。當已經有完美的內置時,不要使用正則表達式來解析URL! 另外,由於缺少'^',OP的正則表達式將匹配'https://示例。com/a/b/c/http:// x/y/z「這是一個足夠有效的URL(我最近遇到了一個從上面的URL提供內容的站點) – 2010-08-17 06:09:48
什麼與preg_match廢話?有一個內置的功能,在PHP只是爲此:http://php.net/manual/en/function.parse-url.php – shylent 2010-08-17 06:05:55
感謝您的筆記,但我只是想知道如何解決該錯誤 – 2010-08-17 06:10:15