我使用下面的代码搜索并查找http是否包含在$ url地址用户输入
if (!preg_match("/http:///", $user_website)
但是我收到了这个错误
Warning: preg_match() [function.preg-match]: Unknown modifier '/' in
我知道它的http是什么,但是如何工作呢?
答案 0 :(得分:2)
使用/
替代字符来标记模式的开头/结尾,而不是必须遍历URL正则表达式中的每个preg_*
。
if (!preg_match("#http://#", $user_website)
答案 1 :(得分:2)
你可以像其他答案一样逃避斜线,或者你可以使用不同的分隔符,最好是你的正则表达式中不会使用的字符:
preg_match('~http://~', ...)
preg_match('!http://!', ...)
你真的不需要正则表达式。字符串匹配应该足够了:
if (strpos($user_website, 'http://') !== false) {
// do something
}
请参阅:strpos()
答案 2 :(得分:2)
您使用/
的分隔符也可以在模式中找到。在这种情况下,您可以 转义模式中的分隔符 :
if (!preg_match("/http:\/\//", $user_website)
或者您可以 选择其他分隔符 。这样可以保持图案的清洁和简洁:
if (!preg_match("#http://#", $user_website)
答案 3 :(得分:2)
当然你必须这样做
$parts = parse_url($my_url);
$parts['scheme']
将包含url方案(可能是'http')。
答案 4 :(得分:1)
以/
个字符退出\
个字符。
答案 5 :(得分:0)
你需要逃避文字字符。在前斜线前放置一个反斜杠。
http://
变为http:\/\/
答案 6 :(得分:0)
if (!preg_match("/http:\/\//", $user_website)