替换无效字符
Replace invalid characters
我想替换一些无效字符,我有一个包含对应关系的数组:
$map = array(
"à" => "a",
"è" => "e",
"ì" => "i",
"ò" => "o",
"ù" => "u"
);
我想使用函数str_replace($pattern, $replacement, $string)
,但我无法得出结论。我该如何继续?
使用 for 循环处理字符串变量的每个索引并为每个索引应用替换函数如何?
theString = "whatever"
String[] = theString.split();
for(int i=0; i<String[].length; i++){
char tmp = String[i].toChar();
if(map.containsKey(tmp)){
char replace = map.getValue(tmp);
tmp = replace;
String[i] = tmp.toString();
}
}
只是帮你想清楚,这段代码实际上不会运行。
希望对您有所帮助
function sanitize($string) {
$string = str_replace(
array('á', 'à', 'ä', 'â', 'ª', 'Á', 'À', 'Â', 'Ä'),
array('a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A'),
$string
);
$string = str_replace(
array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ê', 'Ë'),
array('e', 'e', 'e', 'e', 'E', 'E', 'E', 'E'),
$string
);
$string = str_replace(
array('í', 'ì', 'ï', 'î', 'Í', 'Ì', 'Ï', 'Î'),
array('i', 'i', 'i', 'i', 'I', 'I', 'I', 'I'),
$string
);
$string = str_replace(
array('ó', 'ò', 'ö', 'ô', 'Ó', 'Ò', 'Ö', 'Ô'),
array('o', 'o', 'o', 'o', 'O', 'O', 'O', 'O'),
$string
);
$string = str_replace(
array('ú', 'ù', 'ü', 'û', 'Ú', 'Ù', 'Û', 'Ü'),
array('u', 'u', 'u', 'u', 'U', 'U', 'U', 'U'),
$string
);
$string = str_replace(
array('ñ', 'Ñ', 'ç', 'Ç'),
array('n', 'N', 'c', 'C',),
$string
);
return strtolower($string);
}
我找到的解决方案是使用函数 strtr(string $str, array $arr)
.
有一个数组,就像上面提到的那样:
$map = array(
"à" => "a",
"è" => "e",
"ì" => "i",
"ò" => "o",
"ù" => "u"
);
我就是这么做的:
$string = "àaaaàèììkkekeou";
$new_string = strtr($string, $map);
结果:$new_string -> "aaaaaeiikkekeou"
函数详情:strtr()
我想替换一些无效字符,我有一个包含对应关系的数组:
$map = array(
"à" => "a",
"è" => "e",
"ì" => "i",
"ò" => "o",
"ù" => "u"
);
我想使用函数str_replace($pattern, $replacement, $string)
,但我无法得出结论。我该如何继续?
使用 for 循环处理字符串变量的每个索引并为每个索引应用替换函数如何?
theString = "whatever"
String[] = theString.split();
for(int i=0; i<String[].length; i++){
char tmp = String[i].toChar();
if(map.containsKey(tmp)){
char replace = map.getValue(tmp);
tmp = replace;
String[i] = tmp.toString();
}
}
只是帮你想清楚,这段代码实际上不会运行。
希望对您有所帮助
function sanitize($string) {
$string = str_replace(
array('á', 'à', 'ä', 'â', 'ª', 'Á', 'À', 'Â', 'Ä'),
array('a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A'),
$string
);
$string = str_replace(
array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ê', 'Ë'),
array('e', 'e', 'e', 'e', 'E', 'E', 'E', 'E'),
$string
);
$string = str_replace(
array('í', 'ì', 'ï', 'î', 'Í', 'Ì', 'Ï', 'Î'),
array('i', 'i', 'i', 'i', 'I', 'I', 'I', 'I'),
$string
);
$string = str_replace(
array('ó', 'ò', 'ö', 'ô', 'Ó', 'Ò', 'Ö', 'Ô'),
array('o', 'o', 'o', 'o', 'O', 'O', 'O', 'O'),
$string
);
$string = str_replace(
array('ú', 'ù', 'ü', 'û', 'Ú', 'Ù', 'Û', 'Ü'),
array('u', 'u', 'u', 'u', 'U', 'U', 'U', 'U'),
$string
);
$string = str_replace(
array('ñ', 'Ñ', 'ç', 'Ç'),
array('n', 'N', 'c', 'C',),
$string
);
return strtolower($string);
}
我找到的解决方案是使用函数 strtr(string $str, array $arr)
.
有一个数组,就像上面提到的那样:
$map = array(
"à" => "a",
"è" => "e",
"ì" => "i",
"ò" => "o",
"ù" => "u"
);
我就是这么做的:
$string = "àaaaàèììkkekeou";
$new_string = strtr($string, $map);
结果:$new_string -> "aaaaaeiikkekeou"
函数详情:strtr()