2010-05-31 2 views
3

J'ai une page XML ISO-8859-1, dans laquelle je dois sortir des symboles comme é.
Si je publie é, une erreur est détectée. é fonctionne très bien.
Alors, quelle fonction PHP dois-je utiliser pour transformer é-éComment transformer "é" en é en PHP?

Je ne peux pas passer à utf-8 (comme je suppose que certains vont proposer et à juste titre) Ceci est un énorme code existant.

Répondre

1

Essayez un coup d'oeil dans les commentaires ici; 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; 
} 
?> 

Tous les crédits vont à phil à Lavin me ne

uk les points sur
+0

brut mais travaillant - Merci! –

2

var_dump(ord('é'));

Donne

int(233)

Peut-être, vous pouvez utiliser

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

** Ce pourrait ** ont été une bonne solution si c'était la seule entrée que j'ai. Ce que je reçois réellement, c'est un énorme texte avec des caractères «étranges», pas tout. –

4

Utilisation mb_convert_encoding:

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

donne &#130;.

Cet exemple ne nécessite pas que vous entrez dans le « é », que vous pouvez ou non faire dans la norme ISO-8859-1:

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

Cela me donne un résultat complètement différent sur mon système. –

+0

@Itay Moav Cela dépend de la façon dont vous entrez dans le "é". Je vais mettre à jour la réponse. – Artefacto

Questions connexes