PHP preg_match始终返回false

PHP preg_match始终返回false,php,preg-match,http-referer,Php,Preg Match,Http Referer,我有个客户。假设他们的域名是www.mydomain.com 我们正在www.mydomain.com/newsection上创建一个新页面 在/newsection页面上,客户希望添加一个链接,仅当用户以前在主站点时,才显示“返回主站点”(www.mydomain.com) 因此,我设置了一段PHP代码,如下所示: <?php $referral = $_SERVER['HTTP_REFERER']; if (preg_match('/http://www.mydomain.com/',

我有个客户。假设他们的域名是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(“不是来自我的域”)

是否有任何明显的语法错误或其他逻辑问题,我没有得到


我的新页面(www.mydomain.com/newsection)是否仍在该主域上?表达式中的斜杠需要转义,因为它们也是分隔符。或者,您可以选择另一个分隔符:

preg_match('~http://www\.mydomain\.com~', $referral)
注意我还转义了
s,它们是正则表达式中的特殊字符。它们不会破坏正则表达式,但它们匹配任何字符-可能不是您想要的字符。

您可以使用


开发时打开错误报告。实际上,您会收到类似以下警告的信息,这应该会对您有所帮助(尤其是结合minitech的回答):

警告:preg_match()[function.preg match]:中的未知修饰符“/”


启用
错误报告
,则错误变得明显。非常感谢您的重复。我知道可能是那样的,但我就是想不出来。真的非常感谢。谢谢你的提示!我一定会那样做。:)
if (strpos($referral, 'http://www.mydomain.com') !== false) {