我寻找了很长时间的一些安全的URL生成器,但找不到一个可以很好地使用匈牙利语言的生成器,所以我决定用strtr函数替换匈牙利字符,但它不能正常工作。它不会仅将“”替换为"-“。
function safeURL($str) {
$clean = strtr($str, array('Á'=>'a', 'É'=>'e', 'Í'=>'i', 'Ú'=>'u', 'Ü'=>'u', 'Ű'=>'u', 'Ó'=>'o', 'Ö'=>'o', 'Ő'=>'o', '.'=>'-', '!'=>'-', '.'=>'?'));
$clean = strtr($clean, array('á'=>'a', 'é'=>'e', 'í'=>'i', 'ú'=>'u', 'ü'=>'u', 'ű'=>'u', 'ó'=>'o', 'ö'=>'o', 'ő'=>'o', ' '=>'-', '/'=>'-', ':'=>'-'));
$clean = trim($clean, '-');
return $clean;
}我需要列出所有的大写字母和非大写字母,这看起来有点奇怪,但strtolower似乎也不能处理这些字符。我做错了什么?(页面和数据库中的编码已正确设置为UTF-8)。
输出:
Üdvözöllek a weboldalamon! => Üdvözöllek-a-weboldalamon
Sziasztok üpegvőreúű => Sziasztok-üpegvőreúű发布于 2015-07-19 17:42:14
试一试:
$string = "IÁm DÍYÁR";
//These are the chars that are going to be replaced.. you can add other chars by yourself
$bad_chars = array('Á', 'É', 'Í', 'Ú', 'Ü', 'Ű', 'Ó');
//the bad chars are going to be replaced by those ones by order
$good_chars = array('A', 'E', 'I', 'U', 'U', 'U', 'O');
$safe_str = strtr($string, array_combine($bad_chars, $good_chars));或者在您的情况下,这里有一个函数:
function safeURL($str) {
$capital_bad_chars = array('Á', 'É', 'Í', 'Ú', 'Ü', 'Ű', 'Ó', 'Ö', 'Ő', '.', '!', '.');
$capital_good_chars = array('a', 'e', 'i', 'u', 'u', 'u', 'o', 'o', 'o', '-', '-', '?');
$small_bad_chars = array('á', 'é', 'í', 'ú', 'ü', 'ű', 'ó', 'ö', 'ő', ' ', '/', ':'));
$small_good_chars = array('a', 'e', 'i', 'u', 'u', 'u', 'o', 'o', 'o', '-', '-', '-');
$clean = strtr($str, array_combine($capital_bad_chars, $capital_good_chars));
$clean = strtr($str, array_combine($small_bad_chars, $small_good_chars));
$clean = trim($clean, '-');
return $clean;
}这对我很有效!
发布于 2015-07-19 17:35:18
为什么不使用特殊的扩展名呢?德里克的音译很好。看一看--也许你可以使用它。http://derickrethans.nl/projects.html查看页面中间的“音译PHP扩展”在“阅读更多”下面有一个例子。
发布于 2015-07-19 17:46:36
您需要使用多字节字符串函数来正确处理UTF-8字符。尝试使用str_replace和mb_strtolower函数。根据PHP文档,str_replace是二进制安全函数。这意味着它可以处理UTF-8编码的字符串,而不会丢失任何数据。
https://stackoverflow.com/questions/31499563
复制相似问题