<?php

//@todo when possible review this to improve performance
if (!function_exists('_convert_high_ascii')) {
    function _convert_high_ascii($s)
    {
        $HighASCII = array(
            "!\xc0!" => 'A',    # A`
            "!\xe0!" => 'a',    # a`
            "!\xc1!" => 'A',    # A'
            "!\xe1!" => 'a',    # a'
            "!\xc2!" => 'A',    # A^
            "!\xe2!" => 'a',    # a^
            "!\xc4!" => 'Ae',   # A:
            "!\xe4!" => 'ae',   # a:
            "!\xc3!" => 'A',    # A~
            "!\xe3!" => 'a',    # a~
            "!\xc8!" => 'E',    # E`
            "!\xe8!" => 'e',    # e`
            "!\xc9!" => 'E',    # E'
            "!\xe9!" => 'e',    # e'
            "!\xca!" => 'E',    # E^
            "!\xea!" => 'e',    # e^
            "!\xcb!" => 'Ee',   # E:
            "!\xeb!" => 'ee',   # e:
            "!\xcc!" => 'I',    # I`
            "!\xec!" => 'i',    # i`
            "!\xcd!" => 'I',    # I'
            "!\xed!" => 'i',    # i'
            "!\xce!" => 'I',    # I^
            "!\xee!" => 'i',    # i^
            "!\xcf!" => 'Ie',   # I:
            "!\xef!" => 'ie',   # i:
            "!\xd2!" => 'O',    # O`
            "!\xf2!" => 'o',    # o`
            "!\xd3!" => 'O',    # O'
            "!\xf3!" => 'o',    # o'
            "!\xd4!" => 'O',    # O^
            "!\xf4!" => 'o',    # o^
            "!\xd6!" => 'Oe',   # O:
            "!\xf6!" => 'oe',   # o:
            "!\xd5!" => 'O',    # O~
            "!\xf5!" => 'o',    # o~
            "!\xd8!" => 'Oe',   # O/
            "!\xf8!" => 'oe',   # o/
            "!\xd9!" => 'U',    # U`
            "!\xf9!" => 'u',    # u`
            "!\xda!" => 'U',    # U'
            "!\xfa!" => 'u',    # u'
            "!\xdb!" => 'U',    # U^
            "!\xfb!" => 'u',    # u^
            "!\xdc!" => 'Ue',   # U:
            "!\xfc!" => 'ue',   # u:
            "!\xc7!" => 'C',    # ,C
            "!\xe7!" => 'c',    # ,c
            "!\xd1!" => 'N',    # N~
            "!\xf1!" => 'n',    # n~
            "!\xdf!" => 'ss'
        );
        $find = array_keys($HighASCII);
        $replace = array_values($HighASCII);
        $s = preg_replace($find, $replace, $s);
        return $s;
    }
}

if (!function_exists('urlize')) {
    function urlize($s)
    {

        $s = utf8_decode($s);
        $s = _convert_high_ascii($s);  ## convert high-ASCII chars to 7bit.
        $s = strtolower($s);           ## lower-case.
        $s = strip_tags($s);       ## remove HTML tags.
        $s = preg_replace('!&[^;\s]+;!', '', $s);
        $s = preg_replace('!&[^;\s]+;!', '', $s);         ## remove HTML entities.
        $s = preg_replace('![^\w\s-]!', '', $s);           ## remove non-word/space chars.
        $s = preg_replace('![\s_]+!', '-', $s);               ## change space chars to underscores.
        $s = urlencode($s);
        return $s;
    }
}
