jQuery otomatik tamamlama özel karakter (Norveç) sorunları

4 Cevap php

Ben Norveç sitede jQuery otomatik tamamlama fonksiyonu kullanıyorum. Norveç karakterler Æ, Ø ve å yazarken, otomatik tamamlama işlevi ilgili karakteri ile sözcük önerir, ama kelime ilgili karakteri ile başlayan değil. Ben kelimelerin ortasında karakteri kodlamak Norveç karakter yönetmek için var gibi görünüyor, ama değil karakterler onunla başlıyorum.

Ben UTF-8 Norveççe karakterler kodlama ve otomatik tamamlama listesini oluşturmak için kendi fonksiyonu ile bir PHP komut dosyası kullanıyorum.

Bu gerçekten sinir bozucu!

Kod:

PHP kodu:

$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 öneri-kelimeleri containg bir dizidir.

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

jQuery kodu:

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

4 Cevap

Tüm cevaplar ve yardım için teşekkür ederim. Ben kesinlikle PHP ve kodlama ile ilgili bazı yeni şeyler öğrendim :)

Ama benim için çalıştı çözüm bu oldu:

Ben öğrendim PHP fonksiyon göndermeden önce jQuery otomatik tamamlama işlevi aslında UTF-8 kodlar ve küçük özel karakter olduğunu. I önermek içerik dizileri yazmak Yani, ben özel karakterleri kodlamak için benim rewrite()-işlevi kullanılır. Yani benim karşılaştırma fonksiyonu yalnızca her şeyi küçük harfe vardı.

Şimdi o inşaat büyük!

Ben benzer bir yapılandırma kullanarak ancak Danimarka karakterleri ile (Æ, Ø ve å) ve herhangi bir karakter ile bir sorunum yok değilim. Eğer doğru tüm karakterler kodlama emin misiniz?

Değerler ayrılmış listesi | Benim yanıtı içerir. Tüm değerler (yani veritabanında saklanır nasıl) UTF-8 olarak kodlanmış, ve ben / düz metin içerik türünü ayarlamak; charset = utf-8 php başlık işlevini kullanarak. Olsa çalışmak için son bit gerekli değildir.

  • Dürüst

Ben benzer bir sorun vardı. benim durumumda çözüm geri dize dönüştürmek için () php işlevi urldecode oldu orijinal ve db geçecektir daha bulunuyor.