PHP kullanılabilir HTML içine bir Word belgesi dönüştürme

5 Cevap php

Ben yazdım bir PHP aracını kullanarak yayımlamak istediğiniz Word belgeleri bir dizi var. Ben kopyalama ve yapıştırma Word belgeleri bir metin kutusuna ve sonra PHP programı kullanarak MySQL içine kaydedebilirsiniz. I Have sorun kıvırcık tırnak ve elips gibi Word belgeleri tüm standart olmayan karakterler, ("...") kaynaklanmaktadır. Ne şu anda yapmak elle arama ve düz metin veya HTML ya kuruluşlar bu tür şeyler (ve aynı zamanda yabancı semboller e-akut) yerini almaktadır (& eacute; vb) Bunu arayabilirsiniz PHP bir işlevi var mı Bir Word belgesinin çıktısını almak ve ekran yapmak sembolleri içine Firefox'ta düzgün görüntü yok kuruluşlar haline kişiler olması gereken her şeyi, ve diğer sembolleri çevirecektir.

Teşekkürler!

5 Cevap

Daha iyi bir çözüm veritabanı set-up UTF-8 karakterleri desteklemek sağlamak olacaktır. Genişletilmiş sette mevcut ek karakterler hakkında konuşuyor tüm "standart dışı" karakterleri kapsamalıdır.

Eğer gerçekten HTML varlıkları içine bu karakterleri dönüştürmek gerekir Aksi takdirde, kullanmak htmlentities().

Bu geçmişte de bana hizmet etti:

$str = mb_convert_encoding($str, 'HTML-ENTITIES', 'UTF-8')

Ben bütün bu cevapları bir hayati noktayı kaçırmak olduğunu düşünüyorum. Windows kendisi latin1 bir pencere lezzet kullanır, böylece (bir veritabanına olacak bir pencere makinesi ve bir UNIX (ya da bir şey olmayan muckrosoft) kutusuna gönderilen alır bir forma (asimetriktir tırnak gibi) bazı özel karakterleri yapıştırmak ya da ne olursa olsun) bazı karakterler unix sistem kavrar şey, dolayısıyla karışık ve bozuk karakterlerle eşleşen alamadım. Onlar UTF-8 parçası bile değildir - - Bu ne demektir, bir UTF-8 veritabanı var ve htmlentitiesi kullansanız bile, bazı Çirkinler hala OS tanımıyor karakterler çünkü yoluyla almak için gidiyoruz olduğunu microsoft-sadece buluşlar vardır. Ben elle UTF-8 karakterleri bir (aynı zamanda manuel) listesi ile karşılaştı microsoft sadece karakterlerin karakter kodlarını Kara olduğunu ne, tüm bunlar için bir str_replace yapmak, ve - ben bir kaygan çözümün bilmek isterdim SONRA Onlarla ne istersen yapabilirsin - iconv, htmlentitiesi düz bir utf8 veritabanına kaydetmek, artık önemli değil.

Bu tüm benim kavramak biraz titrek - yukarıda kısa forma sakat olan mükemmel bir açıklama için http://www.cs.tut.fi/~jkorpela/www/windows-chars.html check out. - Birisi bu makalede anlatılmaktadır ne PHPify nasıl daha iyi bir çözüm (! Mutlaka biri orada var) varsa ... bunu duymak isterdim!

htmlspecialchars () size uzun bir yol alabilirsiniz, ancak Word belgeleri dağınık olduğu için dikkat edecektir.

Burada olmayan portatif pencereler karakter kümesi ile sorun için pişmiş bir çözümdür. Bu soruna neden onların eşdeğer HTML kuruluşlar ile neredeyse-Latin-1 karakterleri değiştirir.

$translation=array(
    // reference from http://www.cs.tut.fi/~jkorpela/www/windows-chars.html
    "\x82" => "‚",
    "\x83" => "ƒ",
    "\x84" => "„",
    "\x85" => "…",
    "\x86" => "†",
    "\x87" => "‡",
    "\x88" => "ˆ",
    "\x89" => "‰",
    "\x8a" => "Š",
    "\x8b" => "‹",
    "\x8c" => "Œ",
    "\x91" => "‘",
    "\x92" => "’",
    "\x93" => "“",
    "\x94" => "”",
    "\x95" => "•",
    "\x96" => "–",
    "\x97" => "—",
    "\x98" => "˜",
    "\x99" => "™",
    "\x9a" => "š",
    "\x9b" => "›",
    "\x9c" => "œ",
    "\x9f" => "Ÿ",
);    
return str_replace(array_keys($translation),array_values($translation),$input);

It For Me Çalışır TM