Advertisement
Guest User

Convert to "nice" URLs (replace special characters)

a guest
May 9th, 2012
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.96 KB | None | 0 0
  1. <?php
  2.  
  3. // Source: http://prohardver.hu/tema/php_kerdesek_2/hsz_9694-9694.html
  4.  
  5. /**
  6.  *
  7.  * $url = new url("helló világ ez az első szép url-em");
  8.  * var_dump($url->_output);
  9.  *
  10.  * string(34) "hello-vilag-ez-az-elso-szep-url-em"
  11.  */
  12. class url
  13. {
  14.     public $_output;
  15.     private $_str;
  16.     private $_separator;
  17.     /**
  18.      *
  19.      * @param string $str - nyers url
  20.      * @param string $separator - szoelvalaszto karakter
  21.      */
  22.     public function __construct($str, $separator = "dash")
  23.     {
  24.         $this->_str       = $str;
  25.         $this->_separator = $separator;
  26.         $this->url_title();
  27.     }
  28.     /**
  29.      * szep url generalas
  30.      * @return string
  31.      */
  32.     protected function url_title()
  33.     {
  34.         if ($this->_separator == 'dash') {
  35.             $search  = '_';
  36.             $replace = '-';
  37.         } else {
  38.             $search  = '-';
  39.             $replace = '_';
  40.         }
  41.         $str    = strtolower($this->_str);
  42.         $before = array(
  43.             "á",
  44.             "é",
  45.             "ő",
  46.             "ö",
  47.             "ó",
  48.             "ú",
  49.             "ű",
  50.             "ü",
  51.             "í"
  52.         );
  53.         $after  = array(
  54.             "a",
  55.             "e",
  56.             "o",
  57.             "o",
  58.             "o",
  59.             "u",
  60.             "u",
  61.             "u",
  62.             "i"
  63.         );
  64.         $str    = str_replace($before, $after, $str);
  65.         $trans  = array(
  66.             '&\#\d+?;' => '',
  67.             '&\S+?;' => '',
  68.             '\s+' => $replace,
  69.             '[^a-z0-9\-\._]' => '',
  70.             $replace . '+' => $replace,
  71.             $replace . '$' => $replace,
  72.             '^' . $replace => $replace,
  73.             '\.+$' => ''
  74.         );
  75.         $str    = strip_tags($str);
  76.         foreach ($trans as $key => $val) {
  77.             $str = preg_replace("#" . $key . "#i", $val, $str);
  78.         }
  79.         return $this->_output = strtolower(trim(trim(stripslashes($str)), $replace));
  80.     }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement