PluginProbe
Depicter — Popup & Slider Builder / trunk
Depicter — Popup & Slider Builder vtrunk
4.8.1 trunk 1.0.0 1.1.0 1.1.2 1.1.4 1.1.6 1.1.7 1.1.8 1.1.9 1.2.0 1.3.0 1.3.1 1.3.2 1.3.3 1.3.5 1.3.8 1.5.0 1.5.1 1.5.2 1.5.5 1.6.0 1.6.1 1.6.2 1.7.0 All 76 releases
depicter / vendor / averta / core / src / Utility / URL.php

URL.php in Depicter — Popup & Slider Builder trunk, at vendor/averta/core/src/Utility/URL.php

161 lines 3.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace Averta\Core\Utility;
3
4 class URL
5 {
6 /**
7 * Remove query args from url
8 *
9 * @param string $url
10 * @param array $args
11 * @return string
12 */
13 public static function removeQueryArg( $url, $args = [] ){
14
15 if ( is_array( $args ) ) {
16 foreach ( $args as $arg ) {
17 $pattern = "/(?:&|(\?))$arg=[^&]*(?(1)&|)?/";
18 $url = preg_replace( $pattern, '', $url);
19 }
20 } else {
21 $pattern = "/(?:&|(\?))$args=[^&]*(?(1)&|)?/";
22 $url = preg_replace( $pattern, '', $url);
23 }
24
25 $url = rtrim( $url, '?' );
26 return rtrim( $url, '&' );
27 }
28
29 /**
30 * Check If URL is local or not
31 *
32 * @param string $url
33 *
34 * @return bool
35 */
36 public static function isLocal( $url ){
37
38 if ( false === strpos( $url, '.' ) ) {
39 return true;
40 }
41
42 $localPatterns = [
43 '.localhost',
44 'localhost.',
45 '.local',
46 '.idev',
47 '192.168.0',
48 '127.0.0.1',
49 '.localdev',
50 '.test',
51 '.docksal'
52 ];
53
54 foreach ( $localPatterns as $pattern ) {
55 if ( strpos( $url, $pattern ) || strpos( $url, $pattern ) === 0 ) {
56 return true;
57 }
58 }
59 return false;
60 }
61
62 /**
63 * Check if URL is a stage domain or not
64 *
65 * @param string $url
66 *
67 * @return boolean
68 */
69 public static function isStage( $url ): bool {
70 $stageTLDs = [
71 'staging',
72 'wpengine.com',
73 'wpmudev.host',
74 'myftpupload.com',
75 'cloudwaysapps.com',
76 '-dev.ksysweb.com',
77 '-stg.ksysweb.com',
78 'amazonaws.com',
79 'azure.com',
80 'azurewebsites.net',
81 'dev.cc',
82 'elementor.cloud',
83 'flywheelsites.com',
84 'flywheelstaging.com',
85 'kinsta.cloud',
86 'kinsta.com',
87 '-develop.',
88 '-development.',
89 '-local.',
90 'stage.',
91 'sample.',
92 'debug.'
93 ];
94
95 foreach ( $stageTLDs as $stageTLD ) {
96 if ( strpos( $url, $stageTLD ) ) {
97 return true;
98 }
99 }
100
101 $patterns = [
102 '/stage-([^.]*)\.([^.]*)\.([^.]*)/',
103 '/dev-([^.]*)\.([^.]*)\.([^.]*)/',
104 '/test-([^.]*)\.([^.]*)\.([^.]*)/',
105 '/dev\d+([a-zA-Z0-9]*)\.([^.]*)\.([^.]*)/',
106 '/demo\d+\.([^.]*)\.([^.]*)/',
107 '/demos\d+\.([^.]*)\.([^.]*)/',
108 '/stage\d+\.([^.]*)\.([^.]*)/',
109 '/staging\d+\.([^.]*)\.([^.]*)/',
110 ];
111
112 foreach ( $patterns as $pattern ) {
113 preg_match_all( $pattern, $url, $matches, PREG_SET_ORDER );
114 if ( !empty( $matches ) ) {
115 return true;
116 }
117 }
118
119 return false;
120 }
121
122 /**
123 * Get (sub)domain from URL
124 *
125 * @param $url
126 *
127 * @return array|false|int|string
128 */
129 public static function getHostDomain( $url ) {
130 return parse_url( $url, PHP_URL_HOST ) ?? '';
131 }
132
133 /**
134 * Get only main domain of URL
135 *
136 * @param $url
137 *
138 * @return string
139 */
140 public static function getDomain( $url ) {
141 $parseData = parse_url( $url );
142 $domain = preg_replace('/^www\./', '', $parseData['host'] );
143
144 $parts = explode(".", $domain);
145
146 return ( array_key_exists(count( $parts ) - 2, $parts ) ? $parts [count( $parts ) - 2 ] : "") . "." . $parts[ count( $parts ) - 1 ];
147 }
148
149 /**
150 * Get home part of URL
151 *
152 * @param $url
153 *
154 * @return string
155 */
156 public static function getHomePart( $url ): string {
157 $parts = parse_url( $url );
158 return ( $parts["scheme"] ?? "https" ). "://" . $parts["host"] . ( !empty( $parts["port"] ) ? ":". $parts["port"] : '' );
159 }
160 }
161