Data.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. /**
  7. * Core URL helper
  8. *
  9. * @author Magento Core Team <core@magentocommerce.com>
  10. */
  11. namespace Magento\Framework\Url\Helper;
  12. class Data extends \Magento\Framework\App\Helper\AbstractHelper
  13. {
  14. /**
  15. * Retrieve current url in base64 encoding
  16. *
  17. * @return string
  18. */
  19. public function getCurrentBase64Url()
  20. {
  21. return $this->urlEncoder->encode($this->_urlBuilder->getCurrentUrl());
  22. }
  23. /**
  24. * @param string $url
  25. * @return string
  26. */
  27. public function getEncodedUrl($url = null)
  28. {
  29. if (!$url) {
  30. $url = $this->_urlBuilder->getCurrentUrl();
  31. }
  32. return $this->urlEncoder->encode($url);
  33. }
  34. /**
  35. * Add request parameter into url
  36. *
  37. * @param string $url
  38. * @param array $param array( 'key' => value )
  39. * @return string
  40. */
  41. public function addRequestParam($url, $param)
  42. {
  43. $startDelimiter = false === strpos($url, '?') ? '?' : '&';
  44. $arrQueryParams = [];
  45. foreach ($param as $key => $value) {
  46. if (is_numeric($key) || is_object($value)) {
  47. continue;
  48. }
  49. if (is_array($value)) {
  50. // $key[]=$value1&$key[]=$value2 ...
  51. $arrQueryParams[] = $key . '[]=' . implode('&' . $key . '[]=', $value);
  52. } elseif ($value === null) {
  53. $arrQueryParams[] = $key;
  54. } else {
  55. $arrQueryParams[] = $key . '=' . $value;
  56. }
  57. }
  58. if (!empty($arrQueryParams)) {
  59. $url .= $startDelimiter . implode('&', $arrQueryParams);
  60. }
  61. return $url;
  62. }
  63. /**
  64. * Remove request parameter from url
  65. * @param string $url
  66. * @param string $paramKey
  67. * @param bool $caseSensitive
  68. * @return string
  69. */
  70. public function removeRequestParam($url, $paramKey, $caseSensitive = false)
  71. {
  72. $regExpression = '/\\?[^#]*?(' . preg_quote($paramKey, '/') . '\\=[^#&]*&?)/' . ($caseSensitive ? '' : 'i');
  73. while (preg_match($regExpression, $url, $matches) !== 0) {
  74. $paramString = $matches[1];
  75. // if ampersand is at the end of $paramString
  76. if (substr($paramString, -1, 1) != '&') {
  77. $url = preg_replace('/(&|\\?)?' . preg_quote($paramString, '/') . '/', '', $url);
  78. } else {
  79. $url = str_replace($paramString, '', $url);
  80. }
  81. }
  82. return $url;
  83. }
  84. }