File size: 965 Bytes
d2897cd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php

namespace Mautic\EmailBundle\Helper;

class UrlMatcher
{
    public static function hasMatch(array $urlsToCheckAgainst, $urlToFind): bool
    {
        $urlToFind = self::sanitizeUrl($urlToFind);

        foreach ($urlsToCheckAgainst as $url) {
            $url = self::sanitizeUrl($url);

            if (preg_match('/'.preg_quote($url, '/').'/i', $urlToFind)) {
                return true;
            }
        }

        return false;
    }

    /**
     * @return mixed|string
     */
    private static function sanitizeUrl($url)
    {
        // Handle escaped forward slashes as BC
        $url = str_replace('\\/', '/', $url);

        // Ignore ending slash
        $url = rtrim($url, '/');

        // Ignore http/https
        $url = str_replace(['http://', 'https://'], '', $url);

        // Remove preceding //
        if (str_starts_with($url, '//')) {
            $url = str_replace('//', '', $url);
        }

        return $url;
    }
}