htmlentities funktioniert nicht!!!
Chris
- php
Hallo PHP-Profis!
Habe ein kleines Problem.
Bei der Suche nach einem bestimmten Begriff innerhalb eines Textes, der in einer Oracle-DB steht, habe ich ein problem mit Sonderzeichen.
z.B.: Suchbegriff "Klärschlamm"
Sieht in der Datenbank so aus: "Klärschlamm"
Habe jetzt auf der Suchseite folgendes definiert:
if($suchstring!=""){ //Ist der Suchstring nicht leer?
$suchstring1 = strtoupper($suchstring); //Um nicht Case-Sensitive zu sein
$suchstring2 = htmlentities($suchstring); //Damit die Sonderzeichen entsprechend übersetzt werden
Die query sieht so aus:
"select text from v_absatz where (upper(text) like '%$suchstrng1%' or upper(text) like '%suchstring2%')"
Wenn ich die Variablen $suchstring1 und $suchstring2 ausgebe, sehen beide gleich aus, also im Fall von Klärschlamm als Suchbegriff sehen beide so aus: "KLÄRSCHLAMM".
Warum werden die Sonderzeichen nicht html-konform übersetzt???
Bitte um eure Hilfe!!!
Gruß aus Niederösterreich, Chris
Hi!
"select text from v_absatz where (upper(text) like '%$suchstrng1%' or upper(text) like '%suchstring2%')"
Ist $suchstrng1 ein Tippfehler?
Wenn ich die Variablen $suchstring1 und $suchstring2 ausgebe, sehen beide gleich aus, also im Fall von Klärschlamm als Suchbegriff sehen beide so aus: "KLÄRSCHLAMM".
Und wie sieht das im Quelltext der ausgegebenen Seite (Browsercache) aus? Sind da auch keine Unterschiede? Eigentlich sollte dort eine Version mit echten Umlauten stehen.
Gruß aus Tübingen. Felix Riesterer.
Hallo Felix!
"select text from v_absatz where (upper(text) like '%$suchstrng1%' or upper(text) like '%suchstring2%')"
Ist $suchstrng1 ein Tippfehler?
$suchstring1 ist kein Tippfehler!
Wenn ich die Variablen $suchstring1 und $suchstring2 ausgebe, sehen beide gleich aus, also im Fall von Klärschlamm als Suchbegriff sehen beide so aus: "KLÄRSCHLAMM".
Und wie sieht das im Quelltext der ausgegebenen Seite (Browsercache) aus? Sind da auch keine Unterschiede? Eigentlich sollte dort eine Version mit echten Umlauten stehen.
Der Quelltext des Browsers ist ok. Hier giebt es die Unterschiede!!
Aber warum funktioniert die verflixte Query dann nicht??????
Chris
Hi,
Fehlersuche:
Wo ist der Unterschied?
$suchstrng1
$suchstring1
Schöne Grüße,
Julian
Moin!
Wenn ich die Variablen $suchstring1 und $suchstring2 ausgebe, sehen beide gleich aus, also im Fall von Klärschlamm als Suchbegriff sehen beide so aus: "KLÄRSCHLAMM".
WO sehen die gleich aus? Im Quelltext, oder im Browserfenster?
Abgesehen davon dürfte $suchstring2 eigentlich gar kein Uppercase haben, weil du den String nicht uppercasest (gibts für dieses Wort kein passenderer deutsches?).
- Sven Rautenberg
Hallo Sven,
[...] uppercasest (gibts für dieses Wort kein passenderer deutsches?).
'in Grossbuchstaben transformieren/umwandeln' ;-)
Grüße,
CK
Hi,
"select text from v_absatz where (upper(text) like '%$suchstrng1%' or upper(text) like '%suchstring2%')"
Wenn $suchstrng1 kein Tippfehler ist, ist suchstring2 einer (so ganz ohne Dollar)?
cu,
Andreas
Hallo,
Warum werden die Sonderzeichen nicht html-konform übersetzt???
Doch, aber nicht von strtoupper, und Ä ist kein Entity ;)
Gruß, Thoralf
Hallo!
Habe den Fehler bereits entdeckt.
bei der where-clause upper(text) wird der gesamte Text inkl. entities in Grosschreibung übersetzt.
wendet man nun htmlentities($suchstring) an, so sieht dieser, obwohl zuvor strtoupper($suchstring) angewendet wird, so aus: "KLäRSCHLAMM"
upper(text) im select ergibt aber "KLÄRSCHLAMM" - deshalb kein korrektes Ergebnis.
Habe das so behoben:
$suchstring1 = htmlentities($suchstring);
$suchstring1 = strtoupper($suchstring1);
nun stimmt der suchstring mit dem in der DB überein und er wird auch richtig gefunden.
Danke für eure Hilfe und die Tipps!!!!!
Gruß aus NÖ, chris
Hallo,
Warum werden die Sonderzeichen nicht html-konform übersetzt???
Doch, aber nicht von strtoupper, und Ä ist kein Entity ;)Gruß, Thoralf
Hallo,
bei der where-clause upper(text) wird der gesamte Text inkl. entities in Grosschreibung übersetzt.
genau das hab ich gesagt. ;)
Gruß, Thoralf