假设我有一个输入字段

<input type="text" class="form-control" name="filename">


并写这样的东西:


  哈洛


是否可以在写入时检查该字段是否有字母ä并在写入时将其更改为a

到目前为止,我建立了这个:

$search  = array('ä', 'Ä');
$replace = array('ae', 'Ae');

$project = str_replace($search, $replace, $input);

最佳答案

您不需要使用PHP,而是可以使用Javascript:

var el = document.getElementById("filename");
el.addEventListener('keyup', function(){
    var replace = ['ä','å'];
    var replacewith = 'a';
    var replace1 = ['ö'];
    var replacewith1 = 'o';
    replace.forEach(function(letter){
        el.value = el.value.replace(letter, replacewith);
    });
    replace1.forEach(function(letter){
        el.value = el.value.replace(letter, replacewith1);
    });
});


在输入元素中添加id="filename"使其起作用。您可以根据需要向替换数组添加任意多个字母。
您还可以添加更多数组来替换字母。

https://jsfiddle.net/dek5as1x/1

编辑:几个字母的解决方案

var el = document.getElementById("filename");
el.addEventListener('keyup', function(){
    var replaces = [['ä','å'],['ö','ø'],['ï','ì'],['ü','ù','û'],['ë','ê']];
    var replacewith = ['a','o','i','u','e'];
    replaces.forEach(function(letterGroup, index){
        letterGroup.forEach(function(letter){
            el.value = el.value.replace(letter, replacewith[index]);
        });
    });
});


在这里添加一个新数组([])进行替换。然后,将所有字母添加到该数组,然后将其转换为该数组的相同字母。示例:['ê','ë','è']。然后,将字母添加到replacewith数组中。重要的是字母要替换数组中的字母具有与替换中相应数组相同的索引。
当您需要替换许多字母时,此解决方案应该更干净一些。

07-24 16:24