2010-05-31 21 views
3

我有一個XML ISO-8859-1頁面,其中必須輸出符號é。
如果我輸出é它出錯。 é工作得很好。
所以,我應該用什麼PHP函數變換éé如何在PHP中將「é」轉換爲é?

我不能移動到UTF-8(我認爲有些人會認爲這是理所當然的),這是一個巨大的,遺留代碼。

回答

1

嘗試在這裏評論的樣子; http://php.net/manual/en/function.htmlentities.php

phil at lavin dot me dot uk 
08-Apr-2010 03:34 

The following will make a string completely safe for XML: 

<?php 
function philsXMLClean($strin) { 
    $strout = null; 

    for ($i = 0; $i < strlen($strin); $i++) { 
      $ord = ord($strin[$i]); 

      if (($ord > 0 && $ord < 32) || ($ord >= 127)) { 
        $strout .= "&amp;#{$ord};"; 
      } 
      else { 
        switch ($strin[$i]) { 
          case '<': 
            $strout .= '&lt;'; 
            break; 
          case '>': 
            $strout .= '&gt;'; 
            break; 
          case '&': 
            $strout .= '&amp;'; 
            break; 
          case '"': 
            $strout .= '&quot;'; 
            break; 
          default: 
            $strout .= $strin[$i]; 
        } 
      } 
    } 

    return $strout; 
} 
?> 

所有學分去菲爾在拉文能幫我點英國

+0

原油但工作 - 謝謝! – 2010-05-31 19:42:05

2

var_dump(ord('é'));

給人

int(233)

也許,你可以使用

print '&#' . ord('é') . ';'; 
+0

那** **會是一個很好的解決方案,如果這是我唯一的輸入。我實際上得到的是一個巨大的文字,裏面有一些「奇怪」的字符,而不是全部。 – 2010-05-31 19:23:32

4

使用mb_convert_encoding

mb_convert_encoding("é", "HTML-ENTITIES", "ISO-8859-1"); 

給出&#130;

這個例子並不要求你輸入「é」,您可能會或可能不會在ISO 8859這樣做:

mb_convert_encoding(chr(130), "HTML-ENTITIES", "ISO-8859-1"); 
+0

它給了我一個完全不同的結果在我的系統上。 – 2010-05-31 19:37:56

+0

@Itay Moav這取決於你如何進入「é」。我會更新答案。 – Artefacto 2010-05-31 19:40:11