배열에서 unique urls
을 식별해야합니다.URL을위한 PHP 배열
다음 변형 모두는 동일한 것으로 간주한다 :
http://google.com
https://google.com
http://www.google.com
https://www.google.com
www.google.com
google.com
I는 다음과 같은 용액을은 :
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) 아니다. 아무도 더 나은 해결책을 가르쳐 줄 수 있습니까?
출력을 원하는 달성하기위한 두 가지 기능
preg_replace
및parse_url
을 사용하고 있습니까? –@SahilGulati 나는 꽤 분명하다고 생각합니다. 사람들은 그 질문을 이해합니다. – Chris