2016-02-13 51 views
0

我有一个包含文件时的冲浪者来自某些网站的脚本,它看起来像这样:如何使用strpos()insted的的preg_match()的

<?php 
$referral = $_SERVER['HTTP_REFERER']; 
if (preg_match('/yahoo.com\/main.html|yahoo.com\/secound.html/', $referral)) { 
require_once ('a.php'); 
} else if (preg_match('/google.com/', $referral)) { 
require_once ('b.php'); 
} else { 
require_once ('c.php'); 
} 
?> 

但它杀死了我的服务器,我想用吊索取代它(),但我不知道怎么回事,我尝试这样做:

<?php 
$referral = $_SERVER['HTTP_REFERER']; 
if (strops('/yahoo.com\/main.html|yahoo.com\/secound.html/', $referral)) { 
require_once ('a.php'); 
} else if (strops('/google.com/', $referral)) { 
require_once ('b.php'); 
} else { 
require_once ('c.php'); 
} 
?> 

但它不工作:(

+1

你说的这个'strops'是什么? – adeneo

+0

strpos()也许? – aletzo

+0

strpos()不使用正则表达式 – FareedMN

回答

2
<?php 
$referral = $_SERVER['HTTP_REFERER']; 
if ((strpos($referral, 'yahoo.com/main.html')!==false) 
    ||(strpos($referral, 'yahoo.com/secound.html')!==false)) { 
require_once ('a.php'); 
} else if (strpos($referral, 'google.com')!==false) { 
require_once ('b.php'); 
} else { 
require_once ('c.php'); 
} 
?> 
+0

这是可行的。谢谢! – Belhor

+0

也可能不是一个坏主意,而是使用stripos。它与个案无关,谁知道哪种情况下你会在referer header中得到... – kay27

0

看看PHP文件位置:http://php.net/manual/en/function.strpos.php

Strpos在另一个字符串中找到一个特定的字符串,所以你不能使用正则表达式。你可以找到一个特定的字符串。

e.g

strpos('google.com', $referral')

将包含google.com任何字符串返回true。如果你想检测多个不同的字符串,你可以将多个strpos结合在一起(使用一个或一个操作符),或者坚持使用当前的方法。

+0

谢谢。我能做类似strpos('google.com \ /main.html',$ referral')或strpos('google.com \ /main.html | yahoo.com \ /two.html',$ referral')的内容吗? ? – Belhor

+0

你可以这样做: 'if(strpos('google.com',$ referal')或strpos('yahoo.com',$ referal')){'等,但它不是特别整洁。 – Tom