Adapters
10 years ago
Providers
9 years ago
Autoload.php
10 years ago
Embera.php
10 years ago
FakeResponse.php
10 years ago
Formatter.php
10 years ago
HttpRequest.php
10 years ago
Oembed.php
10 years ago
Providers.php
10 years ago
Url.php
10 years ago
Url.php
122 lines
| 1 | <?php |
| 2 | /** |
| 3 | * Url.php |
| 4 | * |
| 5 | * @package Embera |
| 6 | * @author Michael Pratt <pratt@hablarmierda.net> |
| 7 | * @link http://www.michael-pratt.com/ |
| 8 | * |
| 9 | * For the full copyright and license information, please view the LICENSE |
| 10 | * file that was distributed with this source code. |
| 11 | */ |
| 12 | |
| 13 | namespace Embera; |
| 14 | |
| 15 | /** |
| 16 | * This class is used to preform common/popular |
| 17 | * tasks into a url string |
| 18 | */ |
| 19 | class Url |
| 20 | { |
| 21 | /** @var string The url */ |
| 22 | protected $url; |
| 23 | |
| 24 | /** @var string Placeholder for the original url */ |
| 25 | protected $original; |
| 26 | |
| 27 | /** |
| 28 | * Construct |
| 29 | * |
| 30 | * @param string $url A valid url string |
| 31 | * @return void |
| 32 | */ |
| 33 | public function __construct($url) { $this->url = $this->original = preg_replace('~^embed:~i', 'http:', $url); } |
| 34 | |
| 35 | /** |
| 36 | * Returns the full url when |
| 37 | * the object is casted into a string |
| 38 | * |
| 39 | * @return string |
| 40 | */ |
| 41 | public function __toString() { return $this->url; } |
| 42 | |
| 43 | /** |
| 44 | * Searches the url for a pattern $pattern. |
| 45 | * If the pattern matches, the url is marked as invalid |
| 46 | * and is emptied. |
| 47 | * |
| 48 | * @param string $pattern |
| 49 | * @return void |
| 50 | */ |
| 51 | public function invalidPattern($pattern) |
| 52 | { |
| 53 | if (preg_match('~' . $pattern . '~i', $this->url)) |
| 54 | $this->url = ''; |
| 55 | } |
| 56 | |
| 57 | /** |
| 58 | * Overwrites the value of $this->url with |
| 59 | * the given parameter. |
| 60 | * |
| 61 | * @param string $url |
| 62 | * @return void |
| 63 | */ |
| 64 | public function overwrite($url) { $this->url = $url; } |
| 65 | |
| 66 | /** |
| 67 | * Discards changes made to a url, and goes back to the original |
| 68 | * url. |
| 69 | * |
| 70 | * @return void |
| 71 | */ |
| 72 | public function discardChanges() { $this->url = $this->original; } |
| 73 | |
| 74 | /** |
| 75 | * Strips the query string from the url |
| 76 | * |
| 77 | * @return void |
| 78 | */ |
| 79 | public function stripQueryString() { $this->url = preg_replace('~(\?|#)(.*)$~i', '', $this->url); } |
| 80 | |
| 81 | /** |
| 82 | * Strips the / at the end of a url |
| 83 | * |
| 84 | * @return void |
| 85 | */ |
| 86 | public function stripLastSlash() { $this->url = rtrim($this->url, '/'); } |
| 87 | |
| 88 | /** |
| 89 | * Strips starting www from the url |
| 90 | * |
| 91 | * @return void |
| 92 | */ |
| 93 | public function stripWWW() { $this->url = str_ireplace('://www.', '://', $this->url); } |
| 94 | |
| 95 | /** |
| 96 | * Adds www. subdomain to the urls |
| 97 | * |
| 98 | * @return void |
| 99 | */ |
| 100 | public function addWWW() |
| 101 | { |
| 102 | if (!preg_match('~^https?://www\.~i', $this->url)) |
| 103 | $this->url = str_ireplace('://', '://www.', $this->url); |
| 104 | } |
| 105 | |
| 106 | /** |
| 107 | * Replaces https protocol to http |
| 108 | * |
| 109 | * @return void |
| 110 | */ |
| 111 | public function convertToHttp() { $this->url = str_ireplace('https://', 'http://', $this->url); } |
| 112 | |
| 113 | /** |
| 114 | * Replaces http protocol to https |
| 115 | * |
| 116 | * @return void |
| 117 | */ |
| 118 | public function convertToHttps() { $this->url = str_ireplace('http://', 'https://', $this->url); } |
| 119 | } |
| 120 | |
| 121 | ?> |
| 122 |