Spaces:
No application file
No application file
| 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; | |
| } | |
| } | |