我創建了一個黑名單,我想阻止給定URL的所有變體。例如,使用正則表達式來阻止域
www.google.com
google.com
google.com/maps
sub.google.com
google.com/dir/dir2/dir3
我知道旁邊沒有關於正則表達式,到目前爲止,我有這個愚蠢的嘗試:
$blacklist = array(
'\.google.\\',
);
有人能幫助我嗎?
編輯:
我也想阻止帶有特定擴展名,例如 .ME .XXX
我創建了一個黑名單,我想阻止給定URL的所有變體。例如,使用正則表達式來阻止域
www.google.com
google.com
google.com/maps
sub.google.com
google.com/dir/dir2/dir3
我知道旁邊沒有關於正則表達式,到目前爲止,我有這個愚蠢的嘗試:
$blacklist = array(
'\.google.\\',
);
有人能幫助我嗎?
編輯:
我也想阻止帶有特定擴展名,例如 .ME .XXX
所有域如果你只是做了pre_match你可能只需要沿東西線的:
<?php
$subject = "somedomain";
$pattern = '/\.google\./';
if(preg_match($pattern, $subject)){
die('blacklisted');
}
?>
如果你只是要阻止的域名,那麼爲什麼不直接使用strpos它真的好快,然後進行簡單的模式匹配的正則表達式匹配。檢查出的鏈接
$domain_name = "www.maps.google.com";
if(strpos($domain_name,"google") > 1)
do sumthing here
else
do sumthing
希望它能幫助:)
如果域名是maps.googles.com,該怎麼辦?注意最後加上's'。它會返回一個誤報嗎? – 2012-01-16 10:56:14
Paul bro googles.com和google.com都是不同的域名。正如問題所述,用戶想要阻止域中的所有變化,而不是域本身 – casper123 2012-01-16 19:42:43
並阻止與(比如說)擴展'.me',使用 '/\.me\b/' – 2012-01-16 10:23:14
加入你的正則表達式後,我有'$所有域黑名單=數組( '/\.google\./', );'和'$ host = parse_url($ url,PHP_URL_HOST); (preg_match($ host,$ GLOBALS ['blacklist'])){ return false; '但它返回true而不是false – 2012-01-16 10:29:51
我認爲你有你的模式和黑名單數組倒退,這是針乾草堆不是在這個函數中的另一種方式。 – 2012-01-16 10:31:37