function qtranxf_slug_sanitize($s, &$is_permastruct)
{
    $is_permastruct = qtranxf_slug_is_permastruct($s);
    $s = str_replace('#', '', $s);
    if ($is_permastruct) {
        if ($s[0] != '/') {
            $s = '/' . $s;
        }
        $s = preg_replace('#/{2,}#', '/', $s);
    }
    return remove_accents($s);
}
예제 #2
0
/**
 * @param (string) $slug - urldecoded post name or other slug.
*/
function qtranxf_slug_multilingual_base($slug)
{
    global $q_config;
    $is_permastruct = qtranxf_slug_is_permastruct($slug);
    if ($is_permastruct) {
        $info = qtranxf_slug_split_permastruct($slug);
        $val = '';
        foreach ($info['blocks'] as $b) {
            if (qtranxf_slug_is_substitution($b)) {
                $val .= $b;
            } else {
                $val .= qtranxf_slug_multilingual($b);
            }
        }
        return $val;
    } else {
        return qtranxf_slug_multilingual($slug);
    }
}
function qtranxf_slug_split_permastruct($s)
{
    $blocks = preg_split('#([^a-z0-9_\\-%]+|(?:%[^%/]+%)+)#', $s, null, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
    $info = array('blocks' => $blocks, 'slugs' => array());
    $slugs =& $info['slugs'];
    if (count($blocks) == 1) {
        $slugs[] = $blocks[0];
    } else {
        foreach ($blocks as $k => $v) {
            if (qtranxf_slug_is_permastruct($v)) {
                continue;
            }
            $blocks[$k] = $v = sanitize_key($v);
            $slugs[] = $v;
        }
    }
    return $info;
}