Piet: Text ersetzen

Hallo Gemeinde,

vielleicht gibt es eine einfache Lösung, aber bis jetzt habe ich keine gefunden:

In ein Suchformular gebe ich einen Text ein, der mit Einträgen in der Datenbank verglichen wird. Hierbei wird nicht zwischen Groß-Kleinschreibung unterschieden.

Nun möchte ich den Suchstring im Text markieren:

Das habe ich folgendermaßen gelöst:

$divstring ='<font style="background-color:#cccccc; color:#FF0000; font-weight:bold;">'.$search."</font>";

$cuerpo1 =str_ireplace( "$search","$divstring",  $cuerpo1);

Was ich nun möchte ist, das der  gefunden  Text sich nicht in Groß- Kleinschreibung verändert.

Bei meiner Lösung tritt folgendes ein:

Suchttext: "bauhaus"
übereinstimmender Text aus Datenbank: "Bauhaus"

Ersetzung im Text: "bauhaus"
###########################################

2. Problem:

im text sind einige Passagen durch Anführungszeichen gekenntzeichnet:

lorem dale die dum "Bauhaus" dale dlormen dkan

Ich möchte das diese Textstellen ebenfalls ersetzt werden durch Fettschrift.

Auch dieses habe ich mit str_replace gelöst aber bin nicht zufrieden mit dieser Lösung.

Ich bedanke mich für eure hilfe
Piet

  1. Hallo Gemeinde,

    noch ein Nachtrag:

    Wer sich die Situation life ansehen möchte:

    http://theater-der-klaenge.de/haus/aktuelles.php?pa=5&lang=1

    Ich gebe bauhaus in das Textfeld ein.
    Daraus folgt, daß der markierte Text nun klein geschrieben wird, aber das Wort Bauhaus soll groß bleiben.

    lg
    Piet

  2. Hallo Gemeinde,

    life könnt Ihr das ganze hier sehen:

    http://theater-der-klaenge.de/haus/aktuelles.php?pa=5&lang=1

    Bitte mal "bauhaus" eingeben um zu sehen, das der Text nun in kleinschrift ersetzt wird.

    Danke

  3. Hi,

    Was ich nun möchte ist, das der  gefunden  Text sich nicht in Groß- Kleinschreibung verändert.

    Probiers mal mit regulären Ausdrücken.

    Beispiel:
    $new_text = preg_replace('~('.preg_quote($suche).')~i','<b>\1</b>',$old_text);

    Wobei ~i = Groß-/Kleinschreibung nicht beachten bei der Suche nach Übereinstimmungen.

    \1 = Backreference auf Klammerindex (erstes Klammerpaar)

    1. Problem:
      im text sind einige Passagen durch Anführungszeichen gekenntzeichnet:
      lorem dale die dum "Bauhaus" dale dlormen dkan

    Wäre mit regexp eigentlich auch kein Abenteuer.

    $new_text = preg_replace('~"([^"]+)"~','<b>"\1"</b>',$old_text);

    Alle Anführungszeichen, gefolgt von 1 oder mehr Nichtanfürhungszeichen (Umkehrung) gefolgt von Anführungszeichen durch den Inhalt unter Anführungszeichen ersetzen.

    (alles nicht getestet)

    Viel Erfolg,
    Jonny 5

    1. Hallo,
      die groß-kleinschreibfunktion arbeitet ohne probleme

      $new_text = preg_replace('~('.preg_quote($suche).')~i','<b>\1</b>',$old_text);

      Wobei ~i = Groß-/Kleinschreibung nicht beachten bei der Suche nach Übereinstimmungen.

      \1 = Backreference auf Klammerindex (erstes Klammerpaar)

      1. Problem:
        im text sind einige Passagen durch Anführungszeichen gekenntzeichnet:
        lorem dale die dum "Bauhaus" dale dlormen dkan

      Wäre mit regexp eigentlich auch kein Abenteuer.

      $new_text = preg_replace('~"([^"]+)"~','<b>"\1"</b>',$old_text);

      Das ersetzen der anführungszeichen funktioniert auch, aber leider wenn der HTML-Code so aussieht:
      Gastspiele mit &#034;Die mechanische Bauhausb&uuml;hne&#034; in K&ouml;ln,

      leider nicht, in diesem fall verwende ich folgende abwandlung:
      $new_text  = preg_replace('~&#034;([^&#034;]+)&#034;~','<b>&#034;\1&#034;</b>',$old_text);

      dank für die hilfe

      1. Hallo

        Das ersetzen der anführungszeichen funktioniert auch, aber leider wenn der HTML-Code so aussieht:
        Gastspiele mit &#034;Die mechanische Bauhausb&uuml;hne&#034; in K&ouml;ln,

        leider nicht, ...

        Dann ist es an der Zeit, eine Umstellung der Seite auf UTF-8 zu überdenken. Und ja, das ist im erstem Moment ein nicht gerade geringer Aufwand.

        Tschö, Auge

        --
        Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
        Terry Pratchett, "Wachen! Wachen!"
        Veranstaltungsdatenbank Vdb 0.3
  4. Hallo,

    Suchttext: "bauhaus"
    übereinstimmender Text aus Datenbank: "Bauhaus"
    Ersetzung im Text: "bauhaus"
    lorem dale die dum "Bauhaus" dale dlormen dkan

    hast du irgendwas mit dem besagten Baumarkt zu tun, dass du den Namen so auffällig oft hier einstreust? Oder hätte es der Gleichberechtigung halber vielleicht auch mal toom, OBI, Globus oder Hornbach sein dürfen?

    Nebenbei:

    $cuerpo1 =str_ireplace( "$search","$divstring",  $cuerpo1);

    Ich sehe es immer wieder, dass PHP-Programmierer eine einzelne Stringvariable nochmal einzeln in einen String einbetten. Wozu? Steckst du die Plastiktüte, die du beim Einkauf bekommst, auch nochmal in eine Plastiktüte?
    Ich würde das ja einsehen, wenn der resultierende String außer dem Variableninhalt noch weitere Zeichen enthalten sollte, oder wenn mehrere Werte quasi in ein Template eingesetzt werden. Aber so?

    So long,
     Martin

    --
    Zwei Mäuse treiben's miteinander. Sagt der Mäuserich: "Hoffentlich ist nicht wieder alles für die Katz."
    1. Ich sehe es immer wieder, dass PHP-Programmierer eine einzelne Stringvariable nochmal einzeln in einen String einbetten. Wozu? Steckst du die Plastiktüte, die du beim Einkauf bekommst, auch nochmal in eine Plastiktüte?

      Es gibt auch Leute die Gebrauchsgegenstände sammeln - z.B. Euromünzen. Oder eben jene Leute die Gebrauchsgegenstände in 3 verschiedene Täschen verpacken, damit sie nicht beschädigt werden. Handy in Handschützhüllentasche aus Lederimitat mit hässlichem Kunststoffolienfenster - dies wird dann in eine Handysocke gesteckt um es dann nochmal in die Handtasche zu verfrachten.

      Wenn man dann ans Telefon gehen will, dauert es etwa 30 Sekunden bis das Handy ausgepackt ist - bis dahin hat der Anrufer längst aufgegeben :p

    2. 'ǝɯɐu$ ıɥ

      Suchttext: "bauhaus"
      übereinstimmender Text aus Datenbank: "Bauhaus"
      Ersetzung im Text: "bauhaus"
      lorem dale die dum "Bauhaus" dale dlormen dkan

      hast du irgendwas mit dem besagten Baumarkt zu tun, dass du den Namen so auffällig oft hier einstreust? Oder hätte es der Gleichberechtigung halber vielleicht auch mal toom, OBI, Globus oder Hornbach sein dürfen?

      Martin ich kann nur sagen AUA ;-)

      Allein der Link den der OP weiter unten gepostet hat hätte dir schon (auch ohne ihn anzuklicken) einen Hinweis geben können....

      ssnɹƃ
      ʍopɐɥs

      --
      Forget RTFM: call the author at home!
      1. Hallo,

        Suchttext: "bauhaus"
        hast du irgendwas mit dem besagten Baumarkt zu tun, ...
        Martin ich kann nur sagen AUA ;-)

        von dem, was du mir zum Stichwort verlinkst, habe ich noch nie gehört. Ich kannte den Begriff ausschließlich als Namen eines bekannten Baumarkts, und damit war mein Verdacht klar.

        Allein der Link den der OP weiter unten gepostet hat hätte dir schon (auch ohne ihn anzuklicken) einen Hinweis geben können....

        Welcher Link? Etwa in diesem Posting? Zugegeben, der Zusammenhang mit einem Theater hat mich etwas irritiert. Aber für einen weiteren Verdacht reichte es nicht; es hätte ja auch sein können, dass "Bauhaus" dem OP noch wegen einer Renovierung im Gedächtnis war, die kürzlich stattfand.

        So long,
         Martin

        --
        Das Leben ist lebensgefährlich und endet meistens tödlich.
        1. 'ǝɯɐu$ ıɥ

          Suchttext: "bauhaus"
          hast du irgendwas mit dem besagten Baumarkt zu tun, ...
          Martin ich kann nur sagen AUA ;-)

          von dem, was du mir zum Stichwort verlinkst, habe ich noch nie gehört. Ich kannte den Begriff ausschließlich als Namen eines bekannten Baumarkts, und damit war mein Verdacht klar.

          Spätestens nachdem unsere Kunstlehrerin uns in der 7. Klasse nach Weimar geschleift hat ist mir das ein Begriff...

          Allein der Link den der OP weiter unten gepostet hat hätte dir schon (auch ohne ihn anzuklicken) einen Hinweis geben können....

          Welcher Link? Etwa in diesem Posting? Zugegeben, der Zusammenhang mit einem Theater hat mich etwas irritiert. Aber für einen weiteren Verdacht reichte es nicht; es hätte ja auch sein können, dass "Bauhaus" dem OP noch wegen einer Renovierung im Gedächtnis war, die kürzlich stattfand.

          Ja den meinte ich, wenn dir bei Bauhaus nur der Baumarkt einfällt ist klar das der Linktext dich nur etwas irritiert....

          ssnɹƃ
          ʍopɐɥs

          --
          Forget RTFM: call the author at home!
        2. Hallo Martin,

          Suchttext: "bauhaus"
          hast du irgendwas mit dem besagten Baumarkt zu tun, ...
          Martin ich kann nur sagen AUA ;-)
          von dem, was du mir zum Stichwort verlinkst, habe ich noch nie gehört.

          Ich dachte, dass es in deinem Alter ;) keinen gibt, der das nicht kennt (ich kenne im Übrigen die Baumarktkette nicht). Ich hatte das auch in der Schule, vielleicht muss ich das mit dem Alter nochmal andersrum überdenken. ;)
          Ich wundere mich immer wieder wie sehr ich selbst doch davon ausgehe, was ich weiß, wissen andere auch. Es gab bei Jauch mal die Frage, was mit dem Musikantenknochen gemeint sei. Der Kandidat wußte das nicht und ich war echt baff. Später habe ich gemerkt, dass in anderen Regionen der Begriff Mäuschen üblicher ist [1]. ;)

          ciao
          romy

          [1] falls es noch andere regionale Begriffe gibt: es ist der Ellenbogen gemeint.

          1. Hallo,

            Suchttext: "bauhaus"
            hast du irgendwas mit dem besagten Baumarkt zu tun, ...
            Martin ich kann nur sagen AUA ;-)
            von dem, was du mir zum Stichwort verlinkst, habe ich noch nie gehört.
            Ich dachte, dass es in deinem Alter ;) keinen gibt, der das nicht kennt (ich kenne im Übrigen die Baumarktkette nicht). Ich hatte das auch in der Schule, vielleicht muss ich das mit dem Alter nochmal andersrum überdenken. ;)

            das Argument mit der Schule ist so eine Sache. Meine Eltern waren damals auch schon oft entsetzt, was ich in der Schule für einen Unsinn lernen sollte, und noch entsetzter über das, was in der Schule nie überhaupt erwähnt wurde, aus ihrer Sicht aber unbedingt zur Allgemeinbildung gehörte (und das war schon in der Grundschule so, später auf dem Gymnasium aber erst recht).

            Ich wundere mich immer wieder wie sehr ich selbst doch davon ausgehe, was ich weiß, wissen andere auch.

            Das ist aber ein ganz normaler Wesenszug, glaube ich.

            Es gab bei Jauch mal die Frage, was mit dem Musikantenknochen gemeint sei. Der Kandidat wußte das nicht und ich war echt baff. Später habe ich gemerkt, dass in anderen Regionen der Begriff Mäuschen üblicher ist. ;)

            Oh. Mit "Mäuschen" hätte ich jetzt auf dem Schlauch gestanden. Aber "Musikantenknochen" ist mir auch geläufig, und ich hätte mich wohl auch gewundert, wie man das nicht kennen kann.

            Bye,
             Martin

            --
            Lieber eine Stumme im Bett, als eine Taube auf dem Dach.
          2. Hi romy!

            [1] falls es noch andere regionale Begriffe gibt: es ist der Ellenbogen gemeint.

            Ich kenne den Begriff Musikknochen (scheint regional unterschiedlich zu sein :-) ) und das ist, soweit ich das verstehe, nicht der Ellbogen.
            Wenn man sich den Ellbogen ungünstig stößt, dann kann es ja passieren, dass man dieses komische Vibrieren im Arm spürt, bei dem die Gegend um den Ellbogen gefühlt warm wird. Das ist dann der Musikknochen, der dafür verantworlich ist.
            Der Ellbogen ist für mich einfach nur die Außenstelle am Arm, wo ich eben diesen einknicken kann, wo also das Gelenk sitzt.

            Natürlich alles nur geraten bzw. so, wie ich es persönlich interpretiere.
            Deine Aussage muss deshalb nicht falsch sein. =)

            MfG H☼psel

            --
            "It's amazing I won. I was running against peace, prosperity, and incumbency."
            George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
            Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
    3. Hallo Martin,

      ich bedanke mich für Deine konstruktive Kritik an meiner Denkweise beim Programmieren. Es würde uns allen helfen, wenn Du konkrete Lösungen vorschlagen könntest um unser aller Wissen zu erweitern.

      Bauhaus ist nicht nur eine in Deutschland bekannte Baumarktkette sondern auch
      eine Stilrichtung der "Klassischen Moderne" von 1919 bis 1933. Mehr Informationen bekommst Du hier: http://www.bauhaus.de/

      Das Theater der Klänge aus Düsseldorf setzt sich seit Jahren künstlerisch  mit dieser Stilrichtung auseinander.

      Danke für die kooperation

      Piet

  5. Hallo Piet,

    $cuerpo1 =str_ireplace( "$search","$divstring",  $cuerpo1);

    nimm str_replace()

    lorem dale die dum "Bauhaus" dale dlormen dkan

    Ich möchte das diese Textstellen ebenfalls ersetzt werden durch Fettschrift.
    Auch dieses habe ich mit str_replace gelöst aber bin nicht zufrieden mit dieser Lösung.

    Hm... hier schreibst Du selbt str_replace()...
    Willst Du die Anführungsstriche auch fett haben, dann arbeite mit einem Array als ersten Parameter der Funktion str_replace(), der verschiedene Varianten eines Suchstring rechnung trägt.

    z. B.: art nouveau
    Eine Gute Routine sollte durch Umformung verschiedene Schreibweisen erstellen:

    $str   ="art nouveau";  
    $search=routine($tr);  
      
    print_r($search);
    

    Art nouveau
    Art-nouveau
    Art_nouveau
    art Nouveau
    art-Nouveau
    art_Nouveau
    Art Nouveau
    Art-Nouveau
    Art_Nouveau
    "Art nouveau"
    "Art-nouveau"
    "Art_nouveau"
    "art Nouveau"
    "art-Nouveau"
    "art_Nouveau"
    "Art Nouveau"
    "Art-Nouveau"
    "Art_Nouveau"
    'Art nouveau'
    'Art-nouveau'
    'Art_nouveau'
    'art Nouveau'
    'art-Nouveau'
    'art_Nouveau'
    'Art Nouveau'
    'Art-Nouveau'
    'Art_Nouveau'

    Jeder natürliche Feind des Requlären Ausdrucks, zu denen ich mich sehr wohl zähle, wird bei dieser Menge einsehen, das sie hier sehr wohl sinnvoll sind. Daher schlage ich dir preg_replace() vor. Der Suchstring wird, je nach Muster und Modifikator ungeachtet der Groß- und Kleinschreibung gefunden und eins zu eins überschrieben.

    Wenn es nicht helfen konnte, gibt es dann Deine Frage nochmals neuformuliert? *liebguck*

    Gruß aus Berlin!
    eddi