簡體   English   中英

在Word中將Word文檔轉換為可用的HTML

[英]Converting a Word document into usable HTML in PHP

我有一組Word文檔,我想使用我編寫的PHP工具發布。 我將Word文檔復制並粘貼到文本框中,然后使用PHP程序將它們保存到MySQL中。 我遇到的問題來自Word文檔的所有非標准字符,如引號和省略號(“...”)。 我現在所做的是手動搜索並用純文本或HTML實體替換這些東西(以及外部符號,如e-acute)(é等等)我是否可以調用PHP中的函數Word文檔的輸出,並將應該是實體的所有內容轉換為實體,以及在Firefox中無法正確顯示的其他符號轉換為顯示的符號。

謝謝!

這對我來說過去很好:

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

更好的解決方案是確保您的數據庫設置為支持UTF-8字符。 擴展集中可用的其他字符應涵蓋您正在談論的所有“非標准”字符。

否則,如果您確實必須將這些字符轉換為HTML實體,請使用htmlentities()

我認為所有這些答案都錯過了一個重要的觀點。 Windows本身使用latin1的windows風格,所以如果你將一些特殊字符(如不對稱的引號)粘貼到Windows機器上的一個表單中,然后發送到unix(或任何非muckrosoft)框(對於數據庫)或者其他任何一些字符與unix系統所理解的任何東西都不匹配,因此混淆和亂碼的字符。 這意味着即使你有一個UTF-8數據庫,並使用htmlentities,一些惡意仍然會通過,因為它們是操作系統無法識別的字符 - 它們甚至不是UTF-8的一部分 - 是微軟唯一的發明。 我想知道一個光滑的解決方案 - 我所做的是手動將我遇到的僅限微軟的字符的字符代碼列入UTF-8字符的(也是手動的)列表中,為所有這些字符執行str_replace,以及然后,你可以隨心所欲地做任何事情 - iconv,htmlentities,直接保存到utf8數據庫,重要的不再是它了。

我對這一切的把握有點不穩定 - 請查看http://www.cs.tut.fi/~jkorpela/www/windows-chars.html以獲得一個很好的解釋,我已經將其簡化為上面的簡短形式。 - 如果有人有一個更好的解決方案(肯定有一個!)如何PHP化本文解釋的內容...我很樂意聽到它!

htmlspecialchars()會讓你走得很遠,但請注意,因為Word文檔很亂。

這是我用非便攜式Windows字符集解決問題的解決方案。 這將使用等效的HTML實體替換有問題的幾乎拉丁語1個字符。

$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);

它適用於我TM

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM