Aİ ¿½ ï ¿½ benim html sonra arındırmak

3 Cevap php

Ben başka bir tablodan bazı verileri taşıma ediyorum bu yüzden ben tablo yapısını bok yeniden yaşıyorum bir veritabanı var. Bu veriler Ben htmlpurifier ve php bazı str_replace ile bunu temizlemek veri alıyorum şekilde kopyalanıp yapıştırılmış MSO üründen olmuştur görünüyor. İşte temiz fonksiyonudur:

   function clean_html($html) {
    $config = HTMLPurifier_Config::createDefault();
    $config->set('AutoFormat','RemoveEmpty',true);
    $config->set('HTML','AllowedAttributes','href,src');
    $config->set('HTML','AllowedElements','p,em,strong,a,ul,li,ol,img');
    $purifier = new HTMLPurifier($config);

    $html = $purifier->purify($html);

    $html = str_replace(' ',' ',$html);
    $html = str_replace("\r",'',$html);
    $html = str_replace("\n",'',$html);
    $html = str_replace("\t",'',$html);
    $html = str_replace('  ',' ',$html);
    $html = str_replace('<p> </p>','',$html);
    $html = str_replace(chr(160),' ',$html);

    return trim($html);
   }

Benim yeni masa ve CKEditor için çıkış onları içine sonuçları koymak Ancak, ben bu üç karakter olsun.

Ben o zaman çok CKEditor içeriğinden özel karakterleri kaldırmak için denir bir javascript işlevi var. bu da temiz değil

  function remove_special(str) {
    var rExps=[ /[\xC0-\xC2]/g, /[\xE0-\xE2]/g,
    /[\xC8-\xCA]/g, /[\xE8-\xEB]/g,
    /[\xCC-\xCE]/g, /[\xEC-\xEE]/g,
    /[\xD2-\xD4]/g, /[\xF2-\xF4]/g,
    /[\xD9-\xDB]/g, /[\xF9-\xFB]/g,
    /\xD1/,/\xF1/g,
    "/[\u00a0|\u1680|[\u2000-\u2009]|u200a|\u200b|\u2028|\u2029|\u202f|\u205f|\u3000|\xa0]/g", 
    /\u000b/g,'/[\u180e|\u000c]/g',
    /\u2013/g, /\u2014/g,
    /\xa9/g,/\xae/g,/\xb7/g,/\u2018/g,/\u2019/g,/\u201c/g,/\u201d/g,/\u2026/g];
    var repChar=['A','a','E','e','I','i','O','o','U','u','N','n',' ','\t','','-','--','(c)','(r)','*',"'","'",'"','"','...'];

    for(var i=0; i<rExps.length; i++) {
        str=str.replace(rExps[i],repChar[i]);
    }

      for (var x = 0; x < str.length; x++) {
    charcode = str.charCodeAt(x);
          if ((charcode < 32 || charcode > 126) && charcode !=10 && charcode != 13) {
              str = str.replace(str.charAt(x), "");
          }
      }
      return str;
  }

Herkes onlardan kurtulmak için ne yapmak gerekir elini biliyor mu. Ben onlar alıntı çeşit olabileceğini düşünüyorum.

3 Cevap

Karakter kodlamaları ayarsız tüm vardır. â üç bayt UTF-8 kodlu karakter bana göstergesidir.

Keşfetmek için gereken bazı şeyler

  • Eski tablo kodlama neydi edilir?
  • Yeni tablonun kodlama nedir?
  • Ckeditor görüntüler sayfanın kodlama nedir?

Bu HTMLPurifier's default is UTF-8 gibi görünüyor böylece size gerçekten veri kodlama farkında olmak gerekir!

In ilk cevap this SO thread doğru yönde bir işaret ve de sizin remove_special () işlevini basitleştirmek gerekir.

Benzer bir sorunu vardı: http://stackoverflow.com/questions/2298204/php-remove-identify-this-symbol

Karakteri REPLACEMENT CHARACTER (U+FFFD) olduğunu. Bir hata bir UTF kodundaki oradaydım kullanılır:

FFFD � REPLACEMENT CHARACTER

 - used to replace an incoming character whose value 
   is unknown or unrepresentable in Unicode

Çoğu durumda bu veriler bu kodlama, ancak farklı bir kodlanmamışsa iken bazı veriler bir UTF kodlamasıyla yorumlanması anlamına gelir.

Benim sorunum html microsoft ofis ürünleri metin yapıştırarak, ya bir veritabanına edildi. Büyük suçlular emdash ve akıllı tırnaklar gibi görünüyor.