예제 #1
0
/**
* re-implemented from Redaxo core with added EP
*
* replaces special chars in article name
* @param $name       (string) article name
* @param $article_id (string) article id
* @param $clang      (string) clang
*/
function seo42_parse_article_name($name, $article_id, $clang)
{
    global $REX, $I18N;
    static $firstCall = true;
    static $translation = array();
    if ($firstCall) {
        $globalSpecialChars = explode('|', $REX['ADDON']['seo42']['settings']['global_special_chars']);
        $globalSpecialCharsRewrite = explode('|', $REX['ADDON']['seo42']['settings']['global_special_chars_rewrite']);
        foreach ($REX['CLANG'] as $clangId => $clangName) {
            $inheritedClangId = seo42_utils::getInheritedClang($clangId);
            if (isset($REX['ADDON']['seo42']['settings']['lang'][$inheritedClangId]['special_chars']) && isset($REX['ADDON']['seo42']['settings']['lang'][$inheritedClangId]['special_chars_rewrite'])) {
                $specialChars = explode('|', $REX['ADDON']['seo42']['settings']['lang'][$inheritedClangId]['special_chars']);
                $specialCharsRewrite = explode('|', $REX['ADDON']['seo42']['settings']['lang'][$inheritedClangId]['special_chars_rewrite']);
            } else {
                $specialChars = array();
                $specialCharsRewrite = array();
            }
            $translation[$clangId] = array('search' => array_merge($specialChars, $globalSpecialChars), 'replace' => array_merge($specialCharsRewrite, $globalSpecialCharsRewrite));
        }
        $firstCall = false;
    }
    // SANITIZE STUFF
    $name = trim($name, " \t\r\n-.");
    $name = str_replace('/', '-', $name);
    $name = str_replace('.', '-', $name);
    $parsedName = str_replace('+', '-', urlencode(preg_replace('/ {2,}/', ' ', preg_replace('/[^a-zA-Z_\\-0-9 ]/', '', str_replace($translation[$clang]['search'], $translation[$clang]['replace'], $name)))));
    $parsedName = trim($parsedName, "-");
    // "• articlename" was "-articlename"
    // SANITIZE MULTIPLE "-" IN PATHNAME
    $parsedName = preg_replace('/[-]{1,}/', $REX['ADDON']['seo42']['settings']['url_whitespace_replace'], $parsedName);
    return $parsedName;
}