° in ° umwandeln

bauchinj

Erfahrenes Mitglied
Hallo!

Ich arbeite mit einer SOAP API, wobei ich einige "Schwierigkeiten" mit Sonderzeichen habe.
Nehmen wir das Beispiel ° (Grad). Ich erhalte - korrekter Weise - vom Fremdserver ein XML wo Grad mit ° gesendet wird:

Code:
<someXml>Die Temperatur betr&auml;gt 18°C</someXml>

soweit so gut. in der Verarbeitung auf der ServerSeite läuft das Script sehr gut, Problem bereitet aber die Antwort. Ich will nämlich nicht ° zurücksenden, sondern eben °.



Kann mir bei diesem Thema jemand helfen, bin natürlich gerne bereit weitere Infos zu geben, weiß im Moment nur nicht, welche noch benötigt werden.
 
wie gesagt bekomm ich ° übertragen => wenn ich htmlentities("Die Temperatur betr&auml;gt 18°C") aufrufe, erhalte ich als Rückgabe statt & = &Acirc; und statt #176; = &deg;
ich möchte aber ° erhalten.... ist das überhaupt möglich?
 
nein, das funktioniert super mit & und solchen sonderzeichen (&amp;) aber leider nicht mit ° und ich hab das "Problem", dass diese Änderung allgemein gültig sein soll => str_replace is nich....

ich hab mich nun ziemlich durchprobiert, aber leider komm ich zu keinem Ergebnis, es funktioniert nicht mal str_replace("°","grad",$txt);

komisch odeR?
 
...es funktioniert nicht mal str_replace...("°","grad",$txt);

Geht zumindest so:
PHP:
$string = "20°";
$match = "°";
$replace = " Grad";
$string = str_replace($match,$replace,$string);
echo $string;

bzw.

PHP:
$string = "20°";
$match = "°";
$replace = "& # 176;" //Natürlich ohne die Leerzeichen. Bekomme es blos gerad nicht hin, dass das nicht interpretiert wird.
$string = str_replace($match,$replace,$string);
echo $string;
 
Zuletzt bearbeitet:
Also dieses Thema beginnt zu "stinken"....

ich hatte nun eine Idee... ich decodierte meinen String mit utf8_decode(...) und erhielt \xHEX-Wert. Nun wollte ich einfach diesen Hex-Wert auf dezimal umwandeln und \x mit &# ersetzen, sowie einen ; dranhängen..... hört sich doch einfach an, leider falsch gedacht. Es funktioniert irgendwie nicht, dass ich \x ersetze bzw. im String danach suche oder mittels explode abtrenne.

Irgendwie wandelt php den string den ich erhalte (mit zB & # 176;) in Zeichen um (also °). ich kann aber weder & # 176; mit einem Text ersetzen, noch funktioniert selbiges mit dem °-Zeichen.
Ich muss unbedingt & # 176; zurücksenden, ansonsten kann der Empfänger das Ergebnis nicht auswerten (ist leider eine Uraltsoftware...)


Bitte um Hilfe!
 
also mb_encode_numericentity hat gar keine Änderung des Ausgangsstrings geliefert.
Ich steh gerade komplett, es muss doch möglich sein, einen string genau so zurück zu senden, wie erhalten! also mit htmlcode und allem drum und dran!********?


Bin glaub ich grad einen Schritt weiter gekommen:
Hab meinen String mit der Methode htmlentities() konvertiert, um anschließend mit
PHP:
str_replace("&Acirc;&deg;","°",$string);
den richtigen Wert zurückzusenden

NUR: Dies muss für alle Sonderzeichen möglich sein****** Also für jedes Sonderzeichen muss die Dezimale UTF8-Codierung eingesetzt werden - mit utf8_encode() funkionierts leider nicht... bin ich am richtigen weg?
 
Zuletzt bearbeitet:
also mb_encode_numericentity hat gar keine Änderung des Ausgangsstrings geliefert...
Merkwürdig, bei mir funktioniert das:
PHP:
<?php
header('content-type: text/plain');
echo mb_encode_numericentity('Die Temperatur beträgt 1°C',
    array(0xb0,0xb0, 0,0xff),
    'UTF-8');
?>
Ausgabe im Browser:
Die Temperatur beträgt 1°C
 
Zurück