Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/seo-by-rank-math/includes/helpers/class-url.php

Keine Baseline-Datei – Diff nur gegen leer.
Zur Liste
1 -
1 + <?php
2 + /**
3 + * The URL helpers.
4 + *
5 + * @since 1.0.0
6 + * @package RankMath
7 + * @subpackage RankMath\Helpers
8 + * @author RankMath <support@rankmath.com>
9 + */
10 +
11 + namespace RankMath\Helpers;
12 +
13 + use RankMath\Helpers\Str;
14 + use RankMath\Helpers\Param;
15 +
16 + /**
17 + * Url class.
18 + */
19 + class Url {
20 +
21 + /**
22 + * Simple check for validating a URL, it must start with http:// or https://.
23 + * and pass FILTER_VALIDATE_URL validation.
24 + *
25 + * @param string $url to check.
26 + *
27 + * @return bool
28 + */
29 + public static function is_url( $url ) {
30 + if ( ! is_string( $url ) ) {
31 + return false;
32 + }
33 +
34 + // Must start with http:// or https://.
35 + if ( 0 !== strpos( $url, 'http://' ) && 0 !== strpos( $url, 'https://' ) && 0 !== strpos( $url, '//' ) ) {
36 + return false;
37 + }
38 +
39 + // Check for scheme first, if it's missing then add it.
40 + if ( 0 === strpos( $url, '//' ) ) {
41 + $url = 'http:' . $url;
42 + }
43 +
44 + // Must pass validation.
45 + return false !== filter_var( trailingslashit( $url ), FILTER_VALIDATE_URL ) ? true : false;
46 + }
47 +
48 + /**
49 + * Check whether a url is relative.
50 + *
51 + * @param string $url URL string to check.
52 + *
53 + * @return bool
54 + */
55 + public static function is_relative( $url ) {
56 + return ( 0 !== strpos( $url, 'http' ) && 0 !== strpos( $url, '//' ) );
57 + }
58 +
59 + /**
60 + * Checks whether a url is external.
61 + *
62 + * @param string $url URL string to check. This should be a absolute URL.
63 + * @param string $domain If wants to use some other domain not home_url().
64 + *
65 + * @return bool
66 + */
67 + public static function is_external( $url, $domain = false ) {
68 + if ( empty( $url ) || '#' === $url[0] ) { // Link to current page.
69 + return false;
70 + }
71 +
72 + if ( self::is_affiliate( $url ) ) {
73 + return true;
74 + }
75 +
76 + if ( '/' === $url[0] ) { // Link to current page or relative link.
77 + return false;
78 + }
79 +
80 + $domain = self::get_domain( $domain ? $domain : home_url() );
81 + if ( Str::contains( $domain, $url ) ) {
82 + return false;
83 + }
84 +
85 + return true;
86 + }
87 +
88 + /**
89 + * Checks whether a link is an affiliate link.
90 + *
91 + * @param string $url URL string to check. This should be a absolute URL.
92 + *
93 + * @return bool
94 + */
95 + public static function is_affiliate( $url ) {
96 + if ( empty( $url ) ) {
97 + return false;
98 + }
99 +
100 + /**
101 + * Filter: 'wp_helpers_is_affiliate_link' - Allows developer to consider a link as affiliate.
102 + *
103 + * @param bool $value Default false.
104 + * @param string $url URL.
105 + */
106 + return apply_filters( 'wp_helpers_is_affiliate_link', false, $url );
107 + }
108 +
109 + /**
110 + * Get current url.
111 + *
112 + * @codeCoverageIgnore
113 + *
114 + * @return string
115 + */
116 + public static function get_current_url() {
117 + return self::get_scheme() . '://' . self::get_host() . self::get_port() . Param::server( 'REQUEST_URI' );
118 + }
119 +
120 + /**
121 + * Get url scheme.
122 + *
123 + * @return string
124 + */
125 + public static function get_scheme() {
126 + return is_ssl() ? 'https' : 'http';
127 + }
128 +
129 + /**
130 + * Some setups like HTTP_HOST, some like SERVER_NAME, it's complicated.
131 + *
132 + * @link http://stackoverflow.com/questions/2297403/http-host-vs-server-name
133 + *
134 + * @codeCoverageIgnore
135 + *
136 + * @return string the HTTP_HOST or SERVER_NAME
137 + */
138 + public static function get_host() {
139 + $host = Param::server( 'HTTP_HOST' );
140 + if ( false !== $host ) {
141 + return $host;
142 + }
143 +
144 + $name = Param::server( 'SERVER_NAME' );
145 + if ( false !== $name ) {
146 + return $name;
147 + }
148 +
149 + return '';
150 + }
151 +
152 + /**
153 + * Get current request port.
154 + *
155 + * @return string
156 + */
157 + public static function get_port() {
158 + $port = Param::server( 'SERVER_PORT' );
159 + $has_port = $port && ! in_array( $port, [ '80', '443' ], true );
160 + return $has_port ? ':' . $port : '';
161 + }
162 +
163 + /**
164 + * Get parent domain
165 + *
166 + * @param string $url Url to parse.
167 + *
168 + * @return string
169 + */
170 + public static function get_domain( $url ) {
171 + $pieces = wp_parse_url( $url );
172 + $domain = isset( $pieces['host'] ) ? $pieces['host'] : '';
173 +
174 + if ( Str::contains( 'localhost', $domain ) ) {
175 + return 'localhost';
176 + }
177 +
178 + if ( preg_match( '/(?P<domain>[a-zÀ-ž0-9][a-zÀ-ž0-9\-]{1,63}\.[a-zÀ-ž\.]{2,15})$/ui', $domain, $regs ) ) {
179 + return $regs['domain'];
180 + }
181 +
182 + return false;
183 + }
184 + }
185 +