使用strpos()匹配数组的一部分,PHP
我需要一些关于strpos()的帮助 需要建立一种方法来匹配任何包含使用strpos()匹配数组的一部分,PHP,php,strpos,Php,Strpos,我需要一些关于strpos()的帮助 需要建立一种方法来匹配任何包含/apple touch的URL,但还需要保持细节匹配,例如“/favicon.gif”等 目前,匹配项作为数组的一部分单独列出: <?php $errorurl = $_SERVER['REQUEST_URI']; $blacklist = array("/favicon.gif", "/favicon.png", "/apple-touch-icon-precomposed.png", "/apple-touch-
/apple touch
的URL,但还需要保持细节匹配,例如“/favicon.gif”
等
目前,匹配项作为数组的一部分单独列出:
<?php
$errorurl = $_SERVER['REQUEST_URI'];
$blacklist = array("/favicon.gif", "/favicon.png", "/apple-touch-icon-precomposed.png", "/apple-touch-icon.png", "/apple-touch-icon-72x72-precomposed.png", "/apple-touch-icon-72x72.png", "/apple-touch-icon-114x114-precomposed.png", "/apple-touch-icon-114x114.png", "/apple-touch-icon-57x57-precomposed.png", "/apple-touch-icon-57x57.png", "/crossdomain.xml");
if (in_array($errorurl, $blacklist)) { // do nothing }
else { // send an email about error }
?>
有什么想法吗
非常感谢您的帮助除了正则表达式之外,您还可以使用删除所有出现的黑名单项目,并将新字符串与旧字符串进行比较:
if ( str_replace($blacklist, '', $errorurl) !== $errorurl )
{
// do nothing
}
else
{
// send an email about error
}
如果您想使用正则表达式来实现此目的,并且希望使用一个正则表达式字符串来捕获现有黑名单中的所有值,并与任何
apple touch
字符串匹配,那么类似的东西就可以做到这一点
if(preg_match('/^\/(favicon|crossdomain|apple-touch.*)\.(gif|png|xml)$/',$_SERVER['REQUEST_URI']) {
//matched the blacklist!
}
不过,老实说,这远比你需要的复杂
我想说的是,您最好在已有的黑名单数组中保留特定值,如favicon.gif
等;当你在列表中添加更多的项目时,这会让事情变得容易得多
<>我只考虑使用ReGEX用于<代码> Apple Touch < /Cord>值,因为您想阻止它们的任何变体。但即使这样,如果您使用
strpos()
也会更简单,谢谢您的建议。那么如何使用strpos()?事实上,我指的是substr()
:)--类似于if(substr($uri,0,11)=='apple-touch'){……}