gpt4 book ai didi

php - jQuery 自动完成特殊字符(挪威语)问题

转载 作者:行者123 更新时间:2023-12-01 02:38:18 25 4
gpt4 key购买 nike

我在我的挪威网站上使用 jQuery 的自动完成功能。当输入挪威语字符 æ、ø 和 å 时,自动完成功能会建议带有相应字符的单词,但不建议以相应字符开头的单词。看来我必须设法对单词中间的挪威字符进行字符编码,但不能对以其开头的字符进行字符编码。

我正在使用 PHP 脚本和我自己的函数,将挪威字符编码为 UTF-8 并生成自动完成列表。

这真是令人沮丧!

代码:

PHP 代码:

$q = strtolower($_REQUEST["q"]);
if (!$q) return;

function rewrite($string){

$to = array('%E6','%F8','%E5','%F6','%EB','%E4','%C6','%D8','%C5','%C4','%D6','%CB', '%FC', '+', ' ');
$from = array('æ', 'ø', 'å', 'ä', 'ö', 'ë', 'æ', 'ø', 'å', 'ä', 'ö', 'ë', '-', '-');

$string = str_replace($from, $to, $string);

return $string;
}

$items 是一个包含建议词的数组。

foreach ($items as $key=>$value) {
if (strpos(strtolower(rewrite($key)), $q) !== false) {
echo utf8_encode($key)."\n";
}
}

jQuery 代码:

$(document).ready(function(){
$("#autocomplete").autocomplete("/search_words.php", {
position: 'after',
selectFirst: false,
minChars: 3,
width: 240,
cacheLength: 100,
delay: 0
}
)
}
);

最佳答案

错误(我认为):

  • Strtolower()不会小写特殊字符。
  • 因此,您不会在重写函数中转换大写特殊字符(Ä Æ Ø Å 等)

如果我正确理解代码,查询Øygarden(注意大写Ø)会将第一个字符保留其原始形式Ø,但您正在查询urlencode()d 形式应为 %C3%98

您应该使用mb_convert_case()指定 UTF-8 作为编码。

请告诉我这是否可以解决问题。

一般重写建议

您的代码可以使用标准 PHP 函数 100% 替换,该函数可以处理所有 Unicode 字符,而不仅仅是您指定的字符,因此不太容易出现错误。我认为您的自定义 rewrite() 函数的功能可以替换为

然后您将获得正确的 UTF-8 编码数据,不再需要 utf8_encode() 。有可能获得一种适用于所有 Angular 色的更简洁的方法。 也可能已经对存在的任何错误进行了排序(如果该错误存在于您的代码中)。

关于php - jQuery 自动完成特殊字符(挪威语)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1975262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com