Cheetah
FacebookUrlManipulator.php
Go to the documentation of this file.
1 <?php
24 namespace Facebook\Url;
25 
32 {
41  public static function removeParamsFromUrl($url, array $paramsToFilter)
42  {
43  $parts = parse_url($url);
44 
45  $query = '';
46  if (isset($parts['query'])) {
47  $params = [];
48  parse_str($parts['query'], $params);
49 
50  // Remove query params
51  foreach ($paramsToFilter as $paramName) {
52  unset($params[$paramName]);
53  }
54 
55  if (count($params) > 0) {
56  $query = '?' . http_build_query($params, null, '&');
57  }
58  }
59 
60  $scheme = isset($parts['scheme']) ? $parts['scheme'] . '://' : '';
61  $host = isset($parts['host']) ? $parts['host'] : '';
62  $port = isset($parts['port']) ? ':' . $parts['port'] : '';
63  $path = isset($parts['path']) ? $parts['path'] : '';
64  $fragment = isset($parts['fragment']) ? '#' . $parts['fragment'] : '';
65 
66  return $scheme . $host . $port . $path . $query . $fragment;
67  }
68 
77  public static function appendParamsToUrl($url, array $newParams = [])
78  {
79  if (empty($newParams)) {
80  return $url;
81  }
82 
83  if (strpos($url, '?') === false) {
84  return $url . '?' . http_build_query($newParams, null, '&');
85  }
86 
87  list($path, $query) = explode('?', $url, 2);
88  $existingParams = [];
89  parse_str($query, $existingParams);
90 
91  // Favor params from the original URL over $newParams
92  $newParams = array_merge($newParams, $existingParams);
93 
94  // Sort for a predicable order
95  ksort($newParams);
96 
97  return $path . '?' . http_build_query($newParams, null, '&');
98  }
99 
107  public static function getParamsAsArray($url)
108  {
109  $query = parse_url($url, PHP_URL_QUERY);
110  if (!$query) {
111  return [];
112  }
113  $params = [];
114  parse_str($query, $params);
115 
116  return $params;
117  }
118 
129  public static function mergeUrlParams($urlToStealFrom, $urlToAddTo)
130  {
131  $newParams = static::getParamsAsArray($urlToStealFrom);
132  // Nothing new to add, return as-is
133  if (!$newParams) {
134  return $urlToAddTo;
135  }
136 
137  return static::appendParamsToUrl($urlToAddTo, $newParams);
138  }
139 
147  public static function forceSlashPrefix($string)
148  {
149  if (!$string) {
150  return $string;
151  }
152 
153  return strpos($string, '/') === 0 ? $string : '/' . $string;
154  }
155 
163  public static function baseGraphUrlEndpoint($urlToTrim)
164  {
165  return '/' . preg_replace('/^https:\/\/.+\.facebook\.com(\/v.+?)?\//', '', $urlToTrim);
166  }
167 }
Facebook\Url\FacebookUrlManipulator\baseGraphUrlEndpoint
static baseGraphUrlEndpoint($urlToTrim)
Definition: FacebookUrlManipulator.php:163
php
Facebook\Url\FacebookUrlManipulator\forceSlashPrefix
static forceSlashPrefix($string)
Definition: FacebookUrlManipulator.php:147
$url
URI MungeSecretKey $url
Definition: URI.MungeSecretKey.txt:14
Facebook\Url\FacebookUrlManipulator
Definition: FacebookUrlManipulator.php:32
Facebook\Url\FacebookUrlManipulator\getParamsAsArray
static getParamsAsArray($url)
Definition: FacebookUrlManipulator.php:107
Facebook\Url
Definition: FacebookUrlDetectionHandler.php:24
$path
$path
Definition: header.inc.php:12
Facebook\Url\FacebookUrlManipulator\removeParamsFromUrl
static removeParamsFromUrl($url, array $paramsToFilter)
Definition: FacebookUrlManipulator.php:41
Facebook\Url\FacebookUrlManipulator\appendParamsToUrl
static appendParamsToUrl($url, array $newParams=[])
Definition: FacebookUrlManipulator.php:77
Facebook\Url\FacebookUrlManipulator\mergeUrlParams
static mergeUrlParams($urlToStealFrom, $urlToAddTo)
Definition: FacebookUrlManipulator.php:129
empty
Attr AllowedRel this is empty
Definition: Attr.AllowedRel.txt:7
as
as
Definition: Filter.ExtractStyleBlocks.Escaping.txt:10