2010-05-31 2 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

сырой, но рабочий - Спасибо! –

2

var_dump(ord('é'));

дает

int(233)

Может быть, вы могли бы использовать

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

Это ** может ** быть хорошим решением, если это был единственный вход у меня есть. То, что я на самом деле получаю, - это огромный текст с некоторыми «странными» символами в нем, не все. –

4

Использование mb_convert_encoding:

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

дает &#130;.

Этот пример не требует, чтобы вы ввели «E», которые вы можете или не делать в ISO-8859-1:

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

Это дает мне совершенно другой результат в моей системе. –

+0

@Itay Moav Это зависит от того, как вы входите в «é». Я обновлю ответ. – Artefacto

Смежные вопросы