Suchmaschinenoptimierung
   
 

SEMSEO Konferenz 2012
 

 
 

htmlentities oder htmlspecialchars

Gehe zu Seite 1, 2  Weiter
Neues Thema eröffnen   Neue Antwort erstellen    ABAKUS Foren-Übersicht -> Webprogrammierung, Templatedesign & Microformats
 Forumseiten werden nicht indexiert suchen und ersetzen in datenbank  
Pretender

pr


: 22.04.2004
: 1077
: Naumburg


: 13.01.2005, 02:27    : htmlentities oder htmlspecialchars Antworten mit Zitat

Moin Moin an alle PHP Experten!

ich habe da mal ein kleineres problem.
Ich habe ein UTF8 XML Seite die ich mit folgenden Script auslese:

[php]
<?php
$rdffile = "Hier steht die XML URL";
$content = implode ("", file ($rdffile));
preg_match_all("|<product(.*)>(.*)</product>|Uism",$content, $items, PREG_PATTERN_ORDER);
for ($i=0;$i<count($items[0]);$i++)
{ preg_match_all(
"|<name>(.*)</name>(.*)<description>(.*)</description>(.*)<imageUrl>(.*)</imageUrl>(.*)<productUrl>(.*)</productUrl>(.*)<price>(.*)</price>(.*)<currency>(.*)</currency>|Uism",$items[0][$i], $regs, PREG_PATTERN_ORDER);
echo
"<img src='".$regs[5][0]."'>
".$regs[1][0]."
".$regs[3][0]."<br>
Preis: ".$regs[9][0]."
".$regs[11][0]."
<br>
<a href='".$regs[7][0]."' target='_blank'>Klicken Sie hier für alle Details</a><br><br><br><br><br><br><br>\n"; }
?>
[/php]

auf meiner Seit werden nun die Sonderzeichen nicht umgewandelt und ich bekomme folgenden Text angezeigt:

<!--Textanfang-->
Intel&amp;reg; Pentium&amp;reg; D Prozessor 710 (1.40 GHz, 2 MB Cache, 400 MHz FSB)+15.0 XGAMicrosoft&amp;reg; Windows&amp;reg; XP Home
<!--Textende-->

Mit wurde gesagt das ich es mit htmlspecialchars oder htmlentities versuchen soll.
Da ich nun allerdings nicht so ganz fit bin in PHP...
Wie müsste das obige Script aussehen um die UTF8 Seite in 8859-1 (nehme ich an) gewandelt zu werden?

Vielen Dank an alle!

bye Pretender
Nach oben
Pretender Private Nachricht senden E-Mail senden
MikeD

pr


: 12.08.2004
: 112
: Idar-Oberstein


: 13.01.2005, 10:41    : htmlentities oder htmlspecialchars Antworten mit Zitat

Sieht so aus als ob deine '&' als &amp; auftauchen - also anstatt &reg; kommt &amp;reg raus.

Versuch mal :
Code:
$content = preg_replace('/&amp;#(x[a-f0-9]+|[0-9]+);/i', '&#$1;', $content);


hinter der dritten zeile: nicht getestet.

Gruß Mike
Morgen sag ich zu heute gestern und gleich zu jetzt eben - da wart ich doch lieber bis morgen um zu sagen wie spät es gestern über Tag war.
Nach oben
MikeD Private Nachricht senden WWW
Pretender

pr


: 22.04.2004
: 1077
: Naumburg


: 13.01.2005, 13:04    : htmlentities oder htmlspecialchars Antworten mit Zitat

Moin Moin,
Ich habe der 3. Zeile Deinen Codeschnipsel angehängt.

Code:

$content = implode ("", file ($rdffile));$content = preg_replace('/&amp;#(x[a-f0-9]+|[0-9]+);/i', '&#$1;', $content);


funktioniert leider nicht. Die Darstellung von & ® und anderen Sonderzeichen wird immernoch falsch wiedergegeben.

mfg
Pretender

bye Pretender
Nach oben
Pretender Private Nachricht senden E-Mail senden
MikeD

pr


: 12.08.2004
: 112
: Idar-Oberstein


: 13.01.2005, 23:55    : htmlentities oder htmlspecialchars Antworten mit Zitat

probiers mal damit:

Code:

$content = ereg_replace('&amp;', '&', $content);


hatte den regulären Ausdruck des anderen code nicht überprüft - so früh morgens fast unmöglich - war den ganzen tag unterwegs - deshalb die späte antwort.

Gruß Mike
Morgen sag ich zu heute gestern und gleich zu jetzt eben - da wart ich doch lieber bis morgen um zu sagen wie spät es gestern über Tag war.
Nach oben
MikeD Private Nachricht senden WWW
Pretender

pr


: 22.04.2004
: 1077
: Naumburg


: 14.01.2005, 01:25    : htmlentities oder htmlspecialchars Antworten mit Zitat

moin moin,

schau dir den code mal an:

Code:

<?php
$rdffile = "hier steht die url der xml seite";
$content = implode ("", file ($rdffile));
$content = ereg_replace('&amp;', '&', $content);
preg_match_all("|<product>(.*)</product>|Uism",$content, $items, PREG_PATTERN_ORDER);
for ($i=0;$i<count($items[1]);$i++)
{ preg_match_all(
"|<name>(.*)</name>(.*)<description>(.*)</description>(.*)<imageUrl>(.*)</imageUrl>(.*)<productUrl>(.*)</productUrl>(.*)<price>(.*)</price>(.*)<currency>(.*)</currency>|Uism",$items[1][$i], $regs, PREG_PATTERN_ORDER);
$regs[3][0] = str_replace ("&amp;","&",$regs[3][0]);
$regs[11][0] = str_replace ("&amp;","&",$regs[11][0]);
$regs[3][0] = str_replace ("reg;","®",$regs[3][0]);
$regs[11][0] = str_replace ("reg;","®",$regs[11][0]);
echo
"<img align=left width=110 height=110 src='".$regs[5][0]."'>
".utf8_decode($regs[1][0])."
".utf8_decode($regs[3][0])."<br>
Preis: ".utf8_decode($regs[9][0])."
".utf8_decode($regs[11][0])."
<br>
<a href='".utf8_decode($regs[7][0])."' target='_blank'>Klicken Sie hier für alle Details</a><br><br><br><br><br><br><br>\n"; }
?>


ich hatte schon einge zeit damit rumzuspielen. wenn ich deine zeile mit einfügt passiert im grunde garnichts. die ausgabe bleibt die selbe!
"&®" ist nun das was ausgegebn wird.

das problem scheint, das dass sonderzeichen "®" aus zwei zeichen zusammengesetzt werden muss. aus dem "&amp;" und aus dem "reg;"

aus dem "&amp;" wird dann ein "&" und ein "reg;" was zusammen "&reg;" wäre und im grunde eine "®" ergeben sollte.

das interessante ist, wenn ich NUR das "reg;" hätte, dann gäbe es keine probleme. allerdnings sind da noch andere zeichen. im grunde liegt es wohl an den charset utf-8 was umgewandelt werden muss. ä, ü , ö werden auch falsch dargestellt.

hier kannst du dir das ergbebnis mal genau anschauen.

http://www.laptop-laptop.de/test.php <--- testseite!
auf der rechten seite der testseite, steht die ausgabe mit den script von hier.

ich hoffe du hast verstanden was ich meine

bis denne

bye Pretender
Nach oben
Pretender Private Nachricht senden E-Mail senden
MikeD

pr


: 12.08.2004
: 112
: Idar-Oberstein


: 14.01.2005, 02:21    : htmlentities oder htmlspecialchars Antworten mit Zitat

Code:

$regs[3][0] = str_replace ("&amp;","&",$regs[3][0]);
$regs[11][0] = str_replace ("&amp;","&",$regs[11][0]);
$regs[3][0] = str_replace ("reg;","®",$regs[3][0]);
$regs[11][0] = str_replace ("reg;","®",$regs[11][0]);

mach mal ne kopie von der php und nimm die zeilen raus - damit machst du das replace ja doppelt gemoppelt

um den utf-8 generell zu wandeln kenn ich leider keine Lösung - evtl. weiß da jemand etwas oder hat die fertigen strings parat, aber wenn du selbst hand anlegen willst, bis du alle hast:
Code:

$search = array('zuersetzen1', 'zuersetzen2');
$replace = array('ersetzenmit1', 'ersetzenmit2'); 
$content = str_replace($search, $replace, $content);

reihenfolge beachten und jeweils mit ,'etwas' erweitern - die drei zeilen dann anstatt der einen einsetzen.

Gruß Mike
Morgen sag ich zu heute gestern und gleich zu jetzt eben - da wart ich doch lieber bis morgen um zu sagen wie spät es gestern über Tag war.
Nach oben
MikeD Private Nachricht senden WWW
Pretender

pr


: 22.04.2004
: 1077
: Naumburg


: 15.01.2005, 14:13    : htmlentities oder htmlspecialchars Antworten mit Zitat

Moin Moin,

Code:

<?php
$rdffile = "hier steht die URL der XML Seite";
$content = implode ("", file ($rdffile));
preg_match_all("|<product>(.*)</product>|Uism",$content, $items, PREG_PATTERN_ORDER);
for ($i=0;$i<count($items[1]);$i++)
{ preg_match_all(
"|<name>(.*)</name>(.*)<description>(.*)</description>(.*)<imageUrl>(.*)</imageUrl>(.*)<productUrl>(.*)</productUrl>(.*)<price>(.*)</price>(.*)<currency>(.*)</currency>|Uism",$items[1][$i], $regs, PREG_PATTERN_ORDER);
$search = array('&amp;', 'reg;');
$replace = array('&', 'reg;'); 
$content = str_replace($search, $replace, $content);                  echo
"<img align=left width=110 height=110 alt=Laptop&amp;nbsp;von&amp;nbsp;Fujitsu&amp;nbsp;Siemens&amp;nbsp;im&amp;nbsp;Laptop&amp;nbsp;Shop src='".$regs[5][0]."'>
<h1>".utf8_decode($regs[1][0])."</h1>
".utf8_decode($regs[3][0])."<br>
Preis: ".utf8_decode($regs[9][0])."
".utf8_decode($regs[11][0])."
<br>
<a href='".utf8_decode($regs[7][0])."' target='_blank'>Klicken Sie hier für alle Details</a><br><br><br><br><br><br><br>\n"; }
?>


Also mit diesem Script, funktioniert es leider auch nicht.
wäre das jetzt der richtige script? ich habe so viele verschiedene Möglichkeiten versucht, ich weiss nicht mehr was richtig oder falsch war.

hilf mir bitte nochmal

vielen Dank

bye Pretender
Nach oben
Pretender Private Nachricht senden E-Mail senden
MikeD

pr


: 12.08.2004
: 112
: Idar-Oberstein


: 15.01.2005, 14:45    : htmlentities oder htmlspecialchars Antworten mit Zitat

Code:

<?php
$rdffile = "Hier steht die XML URL";
$content = implode ("", file ($rdffile));
$search = array('&amp;');
$replace = array('&');
$content = str_replace($search, $replace, $content);
preg_match_all("|<product(.*)>(.*)</product>|Uism",$content, $items, PREG_PATTERN_ORDER);
for ($i=0;$i<count($items[0]);$i++)
{ preg_match_all(
"|<name>(.*)</name>(.*)<description>(.*)</description>(.*)<imageUrl>(.*)</imageUrl>(.*)<productUrl>(.*)</productUrl>(.*)<price>(.*)</price>(.*)<currency>(.*)</currency>|Uism",$items[0][$i], $regs, PREG_PATTERN_ORDER);
echo
"<img src='".$regs[5][0]."'>
".$regs[1][0]."
".$regs[3][0]."<br>
Preis: ".$regs[9][0]."
".$regs[11][0]."
<br>
<a href='".$regs[7][0]."' target='_blank'>Klicken Sie hier für alle Details</a><br><br><br><br><br><br><br>\n"; }
?>


jou - du hattest noch das utf8_decode eingebaut - das ersetzen an der falschen stelle usw.
Probier mal den code ersatzweise aus - hab dein erstes posting genommen und es eingebaut (btw. 'reg;' mit 'reg;' zu ersetzen ist wie ein ei wegnehmen und wieder hinlegen - zwei unnötige Arbeitsschrittte )

wenn du nach dem einbau noch irgendwas siehst, was nicht korrekt ist, dann die regeln erweitern um die entsprechenden Zeichen und deren Ersatz.

Gruß Mike
Morgen sag ich zu heute gestern und gleich zu jetzt eben - da wart ich doch lieber bis morgen um zu sagen wie spät es gestern über Tag war.
Nach oben
MikeD Private Nachricht senden WWW
Pretender

pr


: 22.04.2004
: 1077
: Naumburg


: 15.01.2005, 16:56    : htmlentities oder htmlspecialchars Antworten mit Zitat

Hallo Mike,

Vielen Dank erst einmal für Deine Mühe!

soweit macht das Script schon fast was es machen soll.

Ich habe es erweitert und zwa mit:

Code:

                   $search = array('&amp;' , 'reg;');
                   $replace = array('&' , '®');


die Ausgabe ist nun:

[Text]

[/Text]

Normal sollte aber aus "&amp;reg;" das genannte sonderzeichen werden.


Daher habe ich folgendes versucht!
Code:

                   $search = array('&amp;reg;');
                   $replace = array('®');



Aber ohne Erfolg. Es muss irgendwie aus den 2 zeichen, eins gemacht werden dann kann man das sicher auch auf umlaute anwenden.

haste du vieleicht noch eine andere Idee?

bye Pretender
Nach oben
Pretender Private Nachricht senden E-Mail senden
Jörg

pr


: 03.07.2003
: 1192
: Göttingen


: 15.01.2005, 20:28    : htmlentities oder htmlspecialchars Antworten mit Zitat

Die Codierung:

Code:
&amp;reg;


entsteht, wenn man zweimal hintereinander htmlentities() auf ® anwendet

rückgängig macht man das, wenn man zweimal hintereinander die Umkehrfunktion html_entity_decode() anwendet

danach kann man ® und andere Zeichen mit einer Funktion wie dieser in UTF8 codieren (dort fehlt allerdings noch das ®)


Edit:

ich habe es glaub ich zuerst missverstanden, dir geht es um eine Ausgabe in HTML?

dann reicht einmal die Funktion html_entity_decode(), um aus einem &amp;reg; ein &reg; zu machen

Suchmaschinenoptimierte Forensoftware Webmaster-Forum
Nach oben
Jörg Private Nachricht senden WWW
Pretender

pr


: 22.04.2004
: 1077
: Naumburg


: 15.01.2005, 21:29    : htmlentities oder htmlspecialchars Antworten mit Zitat

moin,

um es als html ausgabe ins "&reg;" zu machen, ist nicht so das problem, das problem ist, dass es nicht im quellcode als "&reg;" steht sondern als "&amp;reg;"

der Browser wandelt es dann in erst in ein "&reg;"

tjo... kein ahnung wie ichs machen soll.

bye Pretender
Nach oben
Pretender Private Nachricht senden E-Mail senden
Jörg

pr


: 03.07.2003
: 1192
: Göttingen


: 15.01.2005, 21:40    : htmlentities oder htmlspecialchars Antworten mit Zitat

Mit HTML Ausgabe meinte ich ja den HTML-Quellcode (im Gegensatz zur XML-Ausgabe)

html_entity_decode() macht aus "&amp;reg;" "&reg;"
und der Browser macht aus "&reg;" "®"

Suchmaschinenoptimierte Forensoftware Webmaster-Forum
Nach oben
Jörg Private Nachricht senden WWW
Pretender

pr


: 22.04.2004
: 1077
: Naumburg


: 15.01.2005, 22:09    : htmlentities oder htmlspecialchars Antworten mit Zitat

ok, kannst du mir eventuell das html_entity_decode in den obigen script einfügen? ich bin nicht so der php experte.

wäre scht supi fein

bye Pretender
Nach oben
Pretender Private Nachricht senden E-Mail senden
Jörg

pr


: 03.07.2003
: 1192
: Göttingen


: 15.01.2005, 22:30    : htmlentities oder htmlspecialchars Antworten mit Zitat

Probier es mal so:

<?php
$rdffile = "Hier steht die XML URL";
$content = implode ("", file ($rdffile));
$content = html_entity_decode($content);
preg_match_all("|<product(.*)>(.*)</product>|Uism",$content, $items, PREG_PATTERN_ORDER);

/* ... weiter im Code... */

?>

Suchmaschinenoptimierte Forensoftware Webmaster-Forum
Nach oben
Jörg Private Nachricht senden WWW
Pretender

pr


: 22.04.2004
: 1077
: Naumburg


: 15.01.2005, 23:27    : htmlentities oder htmlspecialchars Antworten mit Zitat

Moin Jörg!

deine idee war richtig, ich habe den code noch etwas ausgebessert, schau mal hier:

Code:

<?php
$rdffile = "http://pf.tradedoubler.com/pf/pf?a=1021138&description=GB&categoryId=19&programs=705&maxResults=11&lastResult=0";
$content = implode ("", file ($rdffile));
[b]$content = html_entity_decode($content);[/b]
preg_match_all("|<product(.*)>(.*)</product>|Uism",$content, $items, PREG_PATTERN_ORDER); 
for ($i=0;$i<count($items[0]);$i++)
{ preg_match_all(
"|<name>(.*)</name>(.*)<description>(.*)</description>(.*)<imageUrl>(.*)</imageUrl>(.*)<productUrl>(.*)</productUrl>(.*)<price>(.*)</price>(.*)<currency>(.*)</currency>|Uism",$items[0][$i], $regs, PREG_PATTERN_ORDER);
echo
"<img src='".$regs[5][0]."'>
".$regs[1][0]."
[b]".html_entity_decode(utf8_decode($regs[3][0]))."[/b]<br>
Preis: ".$regs[9][0]."
".$regs[11][0]."
<br>
<a href='".$regs[7][0]."' target='_blank'>Klicken Sie hier für alle Details</a><br><br><br><br><br><br><br>\n"; }
?>


und jetzt klappt es super fein! ich danke dir echt herzlich dafür!!!

vielen dank
bye

bye Pretender
Nach oben
Pretender Private Nachricht senden E-Mail senden
Neues Thema eröffnen   Neue Antwort erstellen    ABAKUS Foren-Übersicht -> Webprogrammierung, Templatedesign & Microformats
Seite 1 von 2
Gehe zu Seite 1, 2  Weiter

 






Ähnliche Beiträge
Thema Forum Antworten
URL passt oder passt nicht? URL passt oder passt nicht? Deluxe-Dancers Ich hab' da mal 'ne Frage 3 21.05.2012, 12:54 URL passt oder passt nicht?
Sitemap ja oder nein? Sitemap ja oder nein? sanja Ich hab' da mal 'ne Frage 9 18.05.2012, 08:30 Sitemap ja oder nein?
Blog auf der eigenen HP oder extern? Blog auf der eigenen HP oder extern? Hekandi Ich hab' da mal 'ne Frage 4 16.05.2012, 23:47 Blog auf der eigenen HP oder extern?
GA: Daten von mehreren Properties oder Profilen auswerten? GA: Daten von mehreren Properties ode... agentfox Web Analytics & Controlling 0 16.05.2012, 14:39 GA: Daten von mehreren Properties oder Profilen auswerten?
[B] Texte in Deutsch oder Englische gesucht? Testen Sie mich [B] Texte in Deutsch oder Englische g... schreibfeder1 Marktplatz: Dienstleistungen 0 13.05.2012, 18:40 [B] Texte in Deutsch oder Englische gesucht? Testen Sie mich
An Uni zurücklinken oder nicht An Uni zurücklinken oder nicht Blairwitch Domainpopularität / Linkpopularität / Links aufbauen 5 11.05.2012, 18:28 An Uni zurücklinken oder nicht
Abstrafung oder ich seh den Wald vor lauter Bäumen nicht Abstrafung oder ich seh den Wald vor ... sattelite12 Ich hab' da mal 'ne Frage 43 07.05.2012, 09:53 Abstrafung oder ich seh den Wald vor lauter Bäumen nicht

Suchmaschinenoptimierung | Latent Semantische Optimierung (LSO) | SEO Blog | SEO Online Tools | Suchmaschinenmarketing Angebot | Online Marketing

Impressum

Dieses SEO Forum läuft unter phpBB.


Sie lesen gerade: htmlentities oder htmlspecialchars