【发布时间】:2017-09-28 18:52:58
【问题描述】:
function make_ascii($str) {
$special = array('ľ','š','č','ť','ž','ý','á','í','é','ú','ä','ô','ň','ě');
$ascii = array('l','s','c','t','z','y','a','i','e','u','a','o','n','e');
$str = str_split($str);
foreach ($str as $k => $c) {
if(ctype_upper($c)) {
$u = true;
$c = strtolower($c);
} else {
$u = false;
}
if(in_array($c, $special, false)) {
$c = $ascii[array_search($c, $special)];
}
if($u) {
$c = strtoupper($c);
}
$str[$k] = $c;
}
return join($str);
}
在这个函数中,即使我从 $special 数组中输入字符,in_array() 每次都会返回 false,如果我尝试解析常规文本上的 var_dump(),输出将只是 bool(false) 而没有马赫,即使我将字符从源复制粘贴到数组。此外,我正在寻找使此字符替换工作的方法。
【问题讨论】:
-
第一行有return吗?
-
str_split不能在多字节字符串上正常工作。 -
从第一行删除这个
return $str; -
抱歉,返回只是为了让整个脚本正常工作
-
array_seach也是错误的
标签: php