2014-01-28 2 views
0

Для проекта с Smarty я хочу использовать переменную title для ID в HTML. Переменная должна быть строчной, не должна иметь пробелов и гласных мутаций (ä, ö, ü, é, è, à, ...). Например Übergrösse должно быть ubergrosse.Escape variable #id дружественный с Smarty

После крупного поиска я не могу найти действительно полезную команду. Так что я попытался его с |replace модификатором, как это:

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

Есть ли лучший способ сделать это?

ответ

1

Я использую это, чтобы очистить текст для создания безопасных URL-адресов, так что вероятно, будет работать для того, что вам нужно:

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, '-')); 
} 

Сохранить этот код как modifier.safetext.php в вашем Smarty папку плагинов, а затем использовать его только так:

{$title|safetext} 
Смежные вопросы