|
@@ -0,0 +1,38 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace App\Util\Lexer;
|
|
|
+
|
|
|
+class Nickname {
|
|
|
+
|
|
|
+ public static function normalizeProfileUrl($url)
|
|
|
+ {
|
|
|
+ if(!str_contains($url, '@') && filter_var($url, FILTER_VALIDATE_URL)) {
|
|
|
+ $parsed = parse_url($url);
|
|
|
+ $username = str_replace(['/','\\','@'], '', $parsed['path']);
|
|
|
+ return ['domain' => $parsed['host'], 'username' => $username];
|
|
|
+ }
|
|
|
+ $parts = explode('@', $url);
|
|
|
+ $username = null;
|
|
|
+ $domain = null;
|
|
|
+
|
|
|
+ foreach ($parts as $part) {
|
|
|
+
|
|
|
+ // skip empty array slices
|
|
|
+ if(empty($part)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ // if slice contains . assume its a domain
|
|
|
+ if(str_contains($part, '.')) {
|
|
|
+ $domain = filter_var($part, FILTER_VALIDATE_URL) ?
|
|
|
+ parse_url($part, PHP_URL_HOST) :
|
|
|
+ $part;
|
|
|
+ } else {
|
|
|
+ $username = $part;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return ['domain' => $domain, 'username' => $username];
|
|
|
+ }
|
|
|
+
|
|
|
+}
|