2017-03-08 40 views
1

我嘗試用無重音的字符替換帶有口音的字符,但不起作用。有人有一個想法?謝謝更改帶有口音的字符

function epurer_code(texte) { 
    var pattern_accent = new Array("é", "è", "ê", "ë", "ç", "à", "â", "ä", "î", "ï", "ù", "û", "ü", "ô", "ó", "ö"); 
    var pattern_replace_accent = new Array("e", "e", "e", "e", "c", "a", "a", "a", "i", "i", "u", "u", "u", "o", "o", "o"); 
    texte.value = texte.value.preg_replace(pattern_accent, pattern_replace_accent, texte.value); 
} 

<TEXTAREA style="color:black;" name="Body" id="Body" value="" rows="6" cols="60" maxlength="160" onkeyup="supaccent(this);"></TEXTAREA> 
+1

你得到了什麼,從'preg_replace'? – Brian

+0

我認爲您尋找forfor str_replace –

回答

3

這裏有一個方法如何解決它。 textarea內容將被動態替換,每keyup事件。

var elem = document.getElementById('Body'); 
 

 
function clean() { 
 
    var mapObj = { 
 
    "é": 'e', 
 
    "ó": 'o', 
 
    "ç": 'c', 
 
    "è": 'e', 
 
    "ê": 'e', 
 
    "ç": 'c' 
 
    //and so on...  
 
    } 
 
    elem.value = elem.value.replace(/[éèêëçàâäîïùûüôóö]/g, match => mapObj[match]); 
 
}
<TEXTAREA style="color:black;" name="Body" id="Body" value="" rows="6" cols="60" maxlength="160" onkeyup="clean()"></TEXTAREA>

+1

GREAT !!!非常感謝你 !!你是最好的:D – Chrys

1

只是修改你的代碼。使用pattern_accent數組形成正則表達式pattern_exp。在替換模式匹配方法中,我得到pattern_accent數組中的重音匹配位置,並在pattern_replace_accent數組中的相同位置返回重音。

function supaccent(texte) { 
 
    var pattern_accent = new Array("é", "è", "ê", "ë", "ç", "à", "â", "ä", "î", "ï", "ù", "û", "ü", "ô", "ó", "ö"); 
 
    var pattern_replace_accent = new Array("e", "e", "e", "e", "c", "a", "a", "a", "i", "i", "u", "u", "u", "o", "o", "o"); 
 

 
    var pattern_exp = new RegExp('['+pattern_accent.join()+']', 'g') 
 

 
    texte.value = texte.value.replace(pattern_exp, function(match){ 
 
     var index = pattern_accent.indexOf(match); 
 
     return index>=0?pattern_replace_accent[index]:match; 
 
    }); 
 
}
<TEXTAREA style="color:black;" name="Body" id="Body" value="" rows="6" cols="60" maxlength="160" onkeyup="supaccent(this);"></TEXTAREA>

+0

非常感謝你^^ – Chrys