oncode
2/29/2016 - 5:05 PM

Replace utf8 characters like umlauts with their closest 7 bit ascii equivalent.

Replace utf8 characters like umlauts with their closest 7 bit ascii equivalent.

<?php

/**
 * Replace utf8 characters like umlauts with their closest 7 bit ascii equivalent.
 *
 * @see http://stackoverflow.com/questions/158241/php-replace-umlauts-with-closest-7-bit-ascii-equivalent-in-an-utf-8-string
 * @param string $str utf-8 string
 * @return string
 */
function normalizeUtf8Chars($str)
{
    if (strpos($str = htmlentities($str, ENT_QUOTES, 'UTF-8'), '&') !== false) {
        $str = html_entity_decode(preg_replace('~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|tilde|uml);~i', '$1', $str), ENT_QUOTES, 'utf-8');
    }

    return $str;
}

echo normalizeUtf8Chars('Züge'); // Zuge