配列からunique urls
を特定する必要があります。URLに固有のPHP配列
次のバリアントはすべてとして同じカウントする必要があります
http://google.com
https://google.com
http://www.google.com
https://www.google.com
www.google.com
google.com
私は以下のソリューションを持っているが:
public static function array_unique_url(array $array) : array
{
$uniqueArray = [];
foreach($array as $item) {
if(!self::in_array_url($item, $uniqueArray)){
$uniqueArray[] = $item;
}
}
return $uniqueArray;
}
public static function in_array_url(string $needle, array $haystack): bool {
$haystack = array_map([self::class, 'normalizeUrl'], $haystack);
$needle = self::normalizeUrl($needle);
return in_array($needle, $haystack);
}
public static function normalizeUrl(string $url) {
$url = strtolower($url);
return preg_replace('#^(https?://)?(www.)?#', '', $url);
}
しかし、これは非常に効率的なO(N^2)ではありません。誰かが私により良い解決策を教えてもらえますか?
を達成するための2つの機能
preg_replace
とparse_url
を使用していますか? –@SahilGulati私はそれがかなり明らかだと思います。そして人々はその質問を理解する – Chris