Chris: htmlentities funktioniert nicht!!!

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

  1. 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.

    1. 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

      1. Hi,

        Fehlersuche:
        Wo ist der Unterschied?
        $suchstrng1
        $suchstring1

        Schöne Grüße,
        Julian

  2. 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

    --
    Among the maxims on Lord Naoshige's wall, there was this one: "Matters of great concern should be treated lightly."
    Master Ittei commented, "Matters of small concern should be treated seriously."
    (Hagakure: The Way of the Samurai)
    1. Hallo Sven,

      [...] uppercasest (gibts für dieses Wort kein passenderer deutsches?).

      'in Grossbuchstaben transformieren/umwandeln' ;-)

      Grüße,
       CK

      --
      Der Geist ist alles. Du wirst, was du denkst.
  3. 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

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  4. Hallo,

    Warum werden die Sonderzeichen nicht html-konform übersetzt???

    Doch, aber nicht von strtoupper, und Ä ist kein Entity ;)

    Gruß, Thoralf

    --
    Sic Luceat Lux!
    1. 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

      1. Hallo,

        bei der where-clause upper(text) wird der gesamte Text inkl. entities in Grosschreibung übersetzt.

        genau das hab ich gesagt. ;)

        Gruß, Thoralf

        --
        Sic Luceat Lux!