如何从字符串中删除突出的字符?特别是在IE6中,我有这样的事情:
accentsTidy = function(s){
var r=s.toLowerCase();
r = r.replace(new RegExp(/\s/g),"");
r = r.replace(new RegExp(/[àáâãäå]/g),"a");
r = r.replace(new RegExp(/æ/g),"ae");
r = r.replace(new RegExp(/ç/g),"c");
r = r.replace(new RegExp(/[èéêë]/g),"e");
r = r.replace(new RegExp(/[ìíîï]/g),"i");
r = r.replace(new RegExp(/ñ/g),"n");
r = r.replace(new RegExp(/[òóôõö]/g),"o");
r = r.replace(new RegExp(/œ/g),"oe");
r = r.replace(new RegExp(/[ùúûü]/g),"u");
r = r.replace(new RegExp(/[ýÿ]/g),"y");
r = r.replace(new RegExp(/\W/g),"");
return r;
};
Run Code Online (Sandbox Code Playgroud)
但IE6让我烦恼,似乎它不喜欢我的正则表达式.
我试图用正常替换替换重音字符.以下是我目前正在做的事情.
$string = "Éric Cantona";
$strict = strtolower($string);
echo "After Lower: ".$strict;
$patterns[0] = '/[á|â|à|å|ä]/';
$patterns[1] = '/[ð|é|ê|è|ë]/';
$patterns[2] = '/[í|î|ì|ï]/';
$patterns[3] = '/[ó|ô|ò|ø|õ|ö]/';
$patterns[4] = '/[ú|û|ù|ü]/';
$patterns[5] = '/æ/';
$patterns[6] = '/ç/';
$patterns[7] = '/ß/';
$replacements[0] = 'a';
$replacements[1] = 'e';
$replacements[2] = 'i';
$replacements[3] = 'o';
$replacements[4] = 'u';
$replacements[5] = 'ae';
$replacements[6] = 'c';
$replacements[7] = 'ss';
$strict = preg_replace($patterns, $replacements, $strict);
echo "Final: ".$strict;
Run Code Online (Sandbox Code Playgroud)
这给了我:
After Lower: éric cantona
Final: ric cantona
Run Code Online (Sandbox Code Playgroud)
上面给了我ric cantona我想要的输出 …
我刚刚编制了一个包含100万个地名的数据库.我将在一个自动完成的小部件中使用它来查找城市.很多这些地方都有重音......当用户输入没有重音的名字时,我希望能够找到记录.
为了做到这一点,我得到了第二列,其中包含名称的非重音副本.其中许多记录仍然是空白的,所以我想编写一个查询来填充它们.这是否可以直接在MySQL中进行?如果是这样,怎么样?
是否有可能在PHP中比较thoses字符串:
Æther == AEther == Aether
Run Code Online (Sandbox Code Playgroud)
我希望从这种等价中得到积极的结果
我实际上尝试了很多事情,但没有取得真正的成功:
使用strtr将Æ和任何特殊字符替换为Ae(性能不佳,我宁愿保持字符串不变)
使用strcmp/strcasecmp,这解决了上限问题,但我仍然遇到所有UTF-8字符的问题
我想要实现的是解析从json检索到的元素列表并与其他一些json文件匹配,有些可以拼写不同(utf8或非utf8,大写等),所以,现在,唯一的方法我发现这样做是为了制作第三个这样的json:
{
"match": {
"name": "Unravel the \u00c6ther"
},
"replace": {
"name": "Unravel the aether"
}
Run Code Online (Sandbox Code Playgroud)
我用corect替换了基本字符串,但我想找到一种自动化过程的方法.