如果我错了,我不知道这个问题是否适合这个问题。
我想知道是否有人可以详细向我解释以下3个代码段的内容。
Snippet 1
if($str !== mb_convert_encoding(mb_convert_encoding($str, 'UTF-32', 'UTF-8'), 'UTF-8', 'UTF-32')){
$str = mb_convert_encoding($str, 'UTF-8');
}
Snippet 2
$str = preg_replace('`&([a-z]{1,2})(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i', '\\1', $str);
摘录3
$str = preg_replace(array('`[^a-z0-9]`i','`[-]+`'), '-', $str);
以下是完整的代码供参考。
function to_permalink($str){
if($str !== mb_convert_encoding(mb_convert_encoding($str, 'UTF-32', 'UTF-8'), 'UTF-8', 'UTF-32')){
$str = mb_convert_encoding($str, 'UTF-8');
}
$str = htmlentities($str, ENT_NOQUOTES, 'UTF-8');
$str = preg_replace('`&([a-z]{1,2})(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i', '\\1', $str);
$str = html_entity_decode($str, ENT_NOQUOTES, 'UTF-8');
$str = preg_replace(array('`[^a-z0-9]`i','`[-]+`'), '-', $str);
$str = strtolower(trim($str, '-'));
return $str;
}
答案 0 :(得分:6)
Snippet 1确保字符串采用UTF-8编码。
Snippet 2将所有特殊字符转换为其基本形式(即'é' - >'e')。
代码段3会将空格转换为连字符( - )。
总而言之,考虑到功能的名称和内容,我会说它用于制作URL友好链接,例如转换
我发现了一个新的法语单词:église
到
我发现的-A-新 - 法语的单词埃格利斯
通常用于搜索引擎优化。
答案 1 :(得分:0)
您可以通过查找代码中的功能来解答您的许多问题。
到这里开始:http://php.net/docs.php
答案 2 :(得分:0)
Snippet#1:通过从源 - >往返转换来检查字符串是否是有效的UTF-8数据; UTF-32 - > UTF-8。如果结果与输入不同,则尝试让MB库确定输入编码并输出为UTF-8,无论如何。似乎是徒劳无功的。
Snippet#2:查找一系列潜在的字符实体(在这种情况下为重音字符),如果匹配并添加反斜杠,则删除前导&
并尾随;
。因此Æ
变为\AElig
。
摘录#3:将任何非a-z
或0-9
字符或1个或多个-
的字符转换为单个-
。