php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
umwandlung


 
jhaustein
02-12-2014, 18:25 
 
hallo gemeinschaft

folgender code wird beim umsetzen von text verwendet

<?php echo htmlspecialchars_decode($searchResult['Ship']['ShipDescription'], ENT_QUOTES); ?>

nun ist es so, dass leier auch die tags ausgeschrieben werden

bsp
"ein einzigartiges Urlaubserlebnis.<BR><BR>Im asiatischen"

was kann ich da machen, dass der zeilenumbruch stattfindet

 
mermshaus
02-12-2014, 21:18 
 
Dein Wert scheint so etwa zweimal zu oft durch htmlspecialchars geschickt worden zu sein, bevor er in der Ausgabeschicht ankommt.

 
jhaustein
03-12-2014, 09:38 
 
wenn ich das rausnehme, dann bekomme ich diesen text

L&#xe4;nge von 179 Metern bietet die 1999 erbaute Ocean Princess bis zu 679 Passagieren ein einzigartiges Urlaubserlebnis.&lt;BR&gt;&lt;BR&gt

 
h3ll
03-12-2014, 09:56 
 
Wie wärs, wenn du mal testbaren Code postest?

 
jhaustein
03-12-2014, 10:32 
 
einen anderen code als den von oben kann ich leider nicht schicken zumal das ergebnis das gleiche waere

 
h3ll
03-12-2014, 10:34 
 
Na dann kann man dir nicht helfen, wenn du die notwendigen Informationen geheim hältst.

 
jhaustein
03-12-2014, 10:40 
 
ich habe dir doch beide ausgabewn geschickt - einmal ohne den codeteil htmlspecialchars_decode einmal mit

 
jhaustein
03-12-2014, 11:07 
 
ich habs nun so hinbekommen

$textn = htmlspecialchars_decode($searchResult['Ship']['ShipDescription'], ENT_QUOTES);
?>
<div class="description"><?php echo str_ireplace("&lt;BR&gt;", "<br/>", $textn);

 
mermshaus
03-12-2014, 12:37 
 
wenn ich das rausnehme, dann bekomme ich diesen text

Ich meinte schon htmlspecialchars (beziehungsweise eine „kodierende“ Funktion) und nicht htmlspecialchars_decode (beziehungsweise eine „dekodierende“ Funktion).

Ursprünglich hast du halt einen String wie:

ein einzigartiges Urlaubserlebnis.<BR><BR>Im asiatischen

65 69 6e 20 65 69 6e 7a 69 67 61 72 74 69 67 65 73 20 55 72
6c 61 75 62 73 65 72 6c 65 62 6e 69 73 2e 3c 42 52 3e 3c 42
52 3e 49 6d 20 61 73 69 61 74 69 73 63 68 65 6e

(Ich setze mal die Bytes immer dazu, damit es wirklich eindeutig ist.)

Das wird dann kodiert…

$t = htmlspecialchars($s, ENT_QUOTES, 'UTF-8');

ein einzigartiges Urlaubserlebnis.&lt;BR&gt;&lt;BR&gt;Im asiatischen

65 69 6e 20 65 69 6e 7a 69 67 61 72 74 69 67 65 73 20 55 72
6c 61 75 62 73 65 72 6c 65 62 6e 69 73 2e 26 6c 74 3b 42 52
26 67 74 3b 26 6c 74 3b 42 52 26 67 74 3b 49 6d 20 61 73 69
61 74 69 73 63 68 65 6e

…und noch mal kodiert.

$u = htmlspecialchars($t, ENT_QUOTES, 'UTF-8');

ein einzigartiges Urlaubserlebnis.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;Im asiatischen

65 69 6e 20 65 69 6e 7a 69 67 61 72 74 69 67 65 73 20 55 72
6c 61 75 62 73 65 72 6c 65 62 6e 69 73 2e 26 61 6d 70 3b 6c
74 3b 42 52 26 61 6d 70 3b 67 74 3b 26 61 6d 70 3b 6c 74 3b
42 52 26 61 6d 70 3b 67 74 3b 49 6d 20 61 73 69 61 74 69 73
63 68 65 6e

Wenn du es dann einmal wieder dekodierst…

$v = htmlspecialchars_decode($u, ENT_QUOTES);

…, bist du wieder hier:

ein einzigartiges Urlaubserlebnis.&lt;BR&gt;&lt;BR&gt;Im asiatischen

65 69 6e 20 65 69 6e 7a 69 67 61 72 74 69 67 65 73 20 55 72
6c 61 75 62 73 65 72 6c 65 62 6e 69 73 2e 26 6c 74 3b 42 52
26 67 74 3b 26 6c 74 3b 42 52 26 67 74 3b 49 6d 20 61 73 69
61 74 69 73 63 68 65 6e

Und das wird im Browser wegen der kodierten Winkelklammern so dargestellt:

ein einzigartiges Urlaubserlebnis.<BR><BR>Im asiatischen

Du willst aber tatsächlich HTML-Code in deine Seite einfügen. Das heißt, du musst noch mal dekodieren.

$w = htmlspecialchars_decode($v, ENT_QUOTES);

ein einzigartiges Urlaubserlebnis.<BR><BR>Im asiatischen

65 69 6e 20 65 69 6e 7a 69 67 61 72 74 69 67 65 73 20 55 72
6c 61 75 62 73 65 72 6c 65 62 6e 69 73 2e 3c 42 52 3e 3c 42
52 3e 49 6d 20 61 73 69 61 74 69 73 63 68 65 6e

Und damit bist du wieder beim ursprünglichen String angelangt.

Also: Eine schlüssige Interpretation hier ist, dass du für deinen Anwendungsfall deine Daten zweimal zu oft kodierst.

 
jhaustein
03-12-2014, 13:48 
 
lieben dank für die erläuterung


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:57 Uhr.