代码片段 → PHP → 转换带重音字符 转换带重音字符 Chris Coyier 于 2011年12月14日 例如,如果您想将字符串用作 URL 的一部分,但需要使其对这种用途安全。 function replace_accents($str) { $str = htmlentities($str, ENT_COMPAT, "UTF-8"); $str = preg_replace('/&([a-zA-Z])(uml|acute|grave|circ|tilde);/','$1',$str); return html_entity_decode($str); }
或者您只需使用 PHP 中已实现的功能 ><
通过 urlencode 获取的 $unsafe 值会为您提供以下内容:“Hello%20Dani%C3%ABl”
这些都是 URL 中的有效字符。它甚至适用于所谓的多字节字符,这些字符用于韩语、日语、普通话和类似语言。当某个调查系统开始截断评论时,我以这种方式发现了这一点。
JavaScript 等效项是 encodeURI / encodeURIComponent,要反转它,您可以使用 decodeURI / decodeURIComponent。
function replace_bishnoi($str) {
$str = htmlentities($str, ENT_COMPAT, “UTF-8”);
$str = preg_replace(‘/&([a-zA-Z])(uml|acute|grave|circ|tilde);/’,’$1′,$str);
return html_entity_decode($str);
}
反过来,当遇到编码字符时,您可能希望获取与带重音变体最相关的字符。例如:您想存储标题中包含 DJ Tiësto 的歌曲,但希望在脚本中创建文件名时将其显示为 DJ Tiesto。
由于它以我们不希望的方式进行编码,因此这里有一个指向源代码的链接:http://lievheid.nl/examples/decode_ascii/index.phps
原始代码片段不起作用。htmlentities() 未涵盖的 Unicode 完全被忽略。如果您(安全地)想要将 UTF-8 字符串转换为字母数字以在 URL 中使用,请尝试使用 urlify()。
我做了这个
function replace_accents($str) {
$str = htmlentities($str);
$str = preg_replace(‘/&([a-zA-Z])(uml|acute|grave|circ|tilde|cedil|elig|ring|th|slash|zlig|horn);/’,’$1′,$str);
return html_entity_decode($str);
}
function replace_accents($str) {
$str = htmlentities($str);
$str = preg_replace('/&([a-zA-Z])(uml|acute|grave|circ|tilde|cedil|elig|ring|th|slash|zlig|horn);/','$1',$str);
return html_entity_decode($str);
}
谢谢!!