0

strpos() のヘルプが必要です。

などを含む/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 }

?>

何か案は?

助けてくれてありがとう

4

2 に答える 2

1

正規表現の代わりに、ブラックリスト項目のすべての出現を削除しstr_replace、新しい文字列を古い文字列と比較することもできます:

if ( str_replace($blacklist, '', $errorurl) !== $errorurl )
{
  // do nothing
}
else
{
  // send an email about error
}
于 2012-10-11T02:30:16.767 に答える
0

これに正規表現を使用し、既存のブラックリストのすべての値をキャプチャし、任意のapple-touch文字列に一致する単一の正規表現文字列が必要な場合は、次のようなものが必要です。

if(preg_match('/^\/(favicon|crossdomain|apple-touch.*)\.(gif|png|xml)$/',$_SERVER['REQUEST_URI']) {
    //matched the blacklist!
}

正直なところ、これは必要以上に複雑です。

favicon.gifなどの特定の値を、既に持っているブラックリスト配列に保持した方がよいと思います。リストにアイテムを追加するときに、はるかに簡単になります。

apple-touchそれらのバリアントをブロックしたいので、値に正規表現を使用することのみを検討します。しかし、それでも、 を使用すると、より簡単になる可能性がありますstrpos()

于 2012-10-17T13:33:40.773 に答える