我有一个客户。假设他们的域名是www.mydomain.com。
我们正在www.mydomain.com/newsection创建一个新页面。
在/ newsection页面上,客户端想要添加一个“返回主站点”(www.mydomain.com)的链接,前提是该用户之前曾在主站点上。
所以,我设置了这样的PHP代码片段:
<?php
$referral = $_SERVER['HTTP_REFERER'];
if (preg_match('/http://www.mydomain.com/', $referral)) {
echo "from My Domain";
} else {
echo "not from My Domain";
}
?>
但是,即使用户来自mydomain.com,这也总是返回false(“Not from My Domain”)。
我有没有明显的语法错误或其他逻辑问题?
我的新网页(www.mydomain.com/newsection)仍然存在于该主域名中的问题?
答案 0 :(得分:2)
表达式中的斜杠需要进行转义,因为它们也是分隔符。或者,您可以选择其他分隔符:
preg_match('~http://www\.mydomain\.com~', $referral)
注意我也转义了.
s,它们是正则表达式中的特殊字符。他们不会破坏正则表达式,但他们匹配任何角色 - 可能不是你想要的。
答案 1 :(得分:1)
您可以使用strpos
if (strpos($referral, 'http://www.mydomain.com') !== false) {
答案 2 :(得分:0)
开发时启用error_reporting。你实际上得到了类似下面的警告,它可以帮助你(特别是与minitech的答案相结合):
警告:preg_match()[function.preg-match]:
中的未知修饰符'/'