PluginProbe
Independent Analytics – WordPress Analytics Plugin / 2.14.4
Independent Analytics – WordPress Analytics Plugin v2.14.4
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 All 120 releases
independent-analytics / IAWP / Utils / URL.php
URL.php
69 lines 1.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace IAWP\Utils;
4
5 use IAWPSCOPED\Illuminate\Support\Str;
6 use IAWPSCOPED\League\Uri\Contracts\UriException;
7 use IAWPSCOPED\League\Uri\Uri;
8 /** @internal */
9 class URL
10 {
11 private $url;
12 public function __construct(string $url)
13 {
14 $this->url = $url;
15 }
16 public function is_valid_url() : bool
17 {
18 $valid_url = \filter_var($this->url, \FILTER_VALIDATE_URL);
19 if (!$valid_url) {
20 return \false;
21 }
22 try {
23 // Recommend approach for uri validation: https://uri.thephpleague.com/uri/6.0/rfc3986/#uri-validation
24 $components = Uri::createFromString($this->url);
25 if (\is_null($components->getHost())) {
26 return \false;
27 }
28 return \true;
29 } catch (UriException $e) {
30 return \false;
31 }
32 }
33 public function get_url() : ?string
34 {
35 if (!$this->is_valid_url()) {
36 return null;
37 }
38 return $this->url;
39 }
40 public function get_domain() : ?string
41 {
42 if (!$this->is_valid_url()) {
43 return null;
44 }
45 return Uri::createFromString($this->url)->getHost();
46 }
47 public function get_extension() : ?string
48 {
49 if (!$this->is_valid_url()) {
50 return null;
51 }
52 $path = Uri::createFromString($this->url)->getPath();
53 $file = Str::afterLast($path, '/');
54 $extension = Str::afterLast($file, '.');
55 return $extension !== "" ? $extension : null;
56 }
57 public function get_path() : ?string
58 {
59 if (!$this->is_valid_url()) {
60 return null;
61 }
62 return Uri::createFromString($this->url)->getPath();
63 }
64 public static function new(string $url) : self
65 {
66 return new self($url);
67 }
68 }
69