2010-04-03 43 views
1

假設我包含一個包含html的文件。該html的字符作爲感嘆號,西班牙口音(á,ó)。解析的包含文本被處理爲符號而不是正確的值。這發生在FF上,但不在IE(8)上。如何正確地將輸入轉換爲HTML字符

我曾嘗試以下功能:

用htmlspecialchars,ヶ輛,函數utf8_encode

include htmlentities("cont/file.php"); 

樣品file.php內容:

<div>Canción, 「Song Name」</div> 

輸出:

Canci�n, �Song Name� 

回答

0

這是結束在兩個不同的代碼上工作,我的伎倆;原因很難知道,但解析的東西。

這是瀏覽器顯示(FF + IE) - >

alt text http://i77.photobucket.com/albums/j65/speedcoder/4-3-20101-22-31PM.png

樣品**( '包括' 不函數使用,所以不需要輸出緩衝器):

<?php 
$varr = '<div>ääääääó</div>'; 
echo utf8_encode($varr); 
?> 

這一個不適合我:

<?php 
    include "test.php"; 
?> 

如果上面的示例使用包含文件w ith html代碼,它至少不會爲我轉換字符。我改變它不是包含文件,並與utf8_encode一起工作,但問題是我的代碼需要在哪裏使用include函數,哪些不起作用。

下面的示例使用include方法和輸出緩衝區,它允許在發生utf8_encode編碼之前對代碼進行渲染和解析。

我的代碼情景(針對我的具體方案具有可與OB,因爲包括文件還包含代碼需要首先分析):

ob_start(); 
include ("cont/file.php"); 
$content = ob_get_contents(); 
ob_end_clean(); 
echo utf8_encode($content); 

謝謝你幫我弄明白「的Ondrej Slinták「 !!!

2

你的代碼除了通過htmlentities()運行字符串「cont/fie.php」之外什麼都不做,文件的內容不受這個影響。

0

echo htmlentities(file_get_contents("cont/file.php"));是你可能會問的。
但是,如前所述,您不能使用HTMITY,但UTB-8編碼

+0

我只需要搜索包含特殊字符的文件並在包含之前轉換爲html實體。 – Codex73 2010-04-03 14:56:22

+0

@ Codex73如果你已經使用了utf-8,並且你的文本在utf-8中確實是'',你不需要將字符轉換爲實體。只是拋出htmlentities – 2010-04-03 15:04:41

2

您應該在您正在查看此內容的HTML頁面上將您的編碼設置爲UTF-8。 htmlentities根本不影響這個文本。

我想同樣的東西用下面的代碼,它工作得很好:

的index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
     <title>TODO supply a title</title> 
    </head> 
    <body> 
     <p> 
      TODO write content 


      <?php 
       include "test.php"; 
      ?> 

      </p> 
    </body> 
</html> 

test.php的

<div>ääääääó</div> 
+0

我使用這個: Codex73 2010-04-03 15:00:35

+0

請嘗試查看您的瀏覽器的編碼。也許它由於某種原因被設置爲不同的東西。我試過你的代碼,它工作正常。我會用我試過的代碼編輯我的文章。 – 2010-04-03 15:16:13

+0

你確定你不用瀏覽器編碼重寫頁面編碼,如果它發生在FF?你可以嘗試其他瀏覽器嗎?只是爲了確定它在FF內而不是PHP端錯誤。 – 2010-04-03 15:40:57

相關問題