使用Smarty转义变量#id友好

时间:2014-01-28 21:17:07

标签: html internationalization smarty diacritics lowercase

对于使用Smarty的项目,我想在HTML中使用标题变量作为ID。变量应该是小写的,不应该有空格和元音突变(ä,ö,ü,é,è,à,......)。 例如,Übergrösse应为ubergrosse

经过重大搜索后,我找不到真正有用的命令。所以我尝试使用|replace修饰符,如下所示:

<section id="{$title|lower|replace:' ':''|replace:'ä':'a'|replace:'ö':'o'|replace:'ü':'u'|replace:'é':'e'|replace:'è':'e'|replace:'à':'a'}">...</section>

有没有更好的方法呢?

1 个答案:

答案 0 :(得分:1)

我用它来清理文本以生成安全的网址,因此它可能适用于您需要的内容:

function smarty_modifier_safetext($string){
    $string = preg_replace("`\[.*\]`U","",$string);
    $string = preg_replace('`&(amp;)?#?[a-z0-9]+;`i','-',$string);
    $string = preg_replace( '`"`i', "", $string);
    $string = htmlentities($string, ENT_COMPAT, 'utf-8');
    $string = preg_replace( "`&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig|quot|rsquo);`i","\\1", $string );
    $string = html_entity_decode($string);
    $string = preg_replace( array("`[^a-z0-9]`i","`[-]+`") , "-", $string);
    return strtolower(trim($string, '-'));
}

将此代码保存为smarty插件文件夹中的modifier.safetext.php,然后像这样使用它:

{$title|safetext}