Suchwort wie bei Google (Archiv) markieren (nicht aus String auslesen)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Mein ocde kann - nachdem ich jetzt noch einmal geschaut habe - gar nicht richtig funktionieren, da das vBulletin anscheinend ein "\" vor der 1 im preg_replace unterschlagen hat.

    Jetzt sollte es auch mit Sonderzeichen in der URL funktionieren:
    PHP-Code:
    <?php
     $wort 
    str_replace('%amp;''&'$_GET['wort']);

     
    $text '<html>
    <head>
    <title>Test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>

    <body>

    <p>gr&ouml;&szlig;er <strong>Lo</strong>rem ipsum dolor
      sit amet...</p>

    </body>
    </html>'
    ;

     for(
    $i 0$i strlen($wort); $i++) {
            
    $suchmuster .= $wort[$i] . "((\<(.*)\>)?)";
     }

     
    $text preg_replace("/((<[^>]*)|$suchmuster)/ie",
            
    '"\\2"=="\\1"? "\\1":"<span style=\"background-color:yellow;\"><b>\\1</b></span>"'$text);

     echo 
    $text;
    ?>
    Vorraussetzungen:
    "&" muss in "%amp;" (jeweils ohne ") umgeschrieben werden, da das & bekanntlich ein Trennzeichen in der URL zwischen den Parametern darstellt. Alle anderen Sonderzeichen müssen in das entsprechende Entity umgeschrieben werden. Leerzeichen können wie gewohnt weiter verwendet werden.

    ü -> &amp;uuml;
    ö -> &amp;ouml;
    ...

    Bspws:

    "größer" gelb markieren:
    Code:
    http://domain.com?wort=gr%amp;ouml;%amp;szlig;er
    "Lorem ipsum dolor sit amet":
    Code:
    http://domain.com?wort=Lorem ipsum dolor sit amet
    Zuletzt geändert von Indigo; 06.02.2005, 22:44.

    Kommentar


    • #17
      Ich hab das ganze jetzt nur überflogen, und bin auch ziehmlich betrunken, aber mir kam zum suchen trotz tags spontan mal dashier in den sinn:

      PHP-Code:
      <?
      $suchstring = ob_get_contents();
      $suchwort = "foobar";
      $suchwort_u_u_mit_tags = $suchwort{0};
      for ($i=1; $i<str_len($suchwort); ++$i)     $suchwort_u_u_mit_tags .= '(<(.*)>)*?'.$suchwort{$i};
      #Bis hier wird nur das suchmuster zusammengeschustert, es soll nachher das Originalsuchwort sein, nur 
      #zwischen jedem Buchstaben die möglichkeit für <irgendwas> haben...
      preg_replace('#('.$suchwort_u_u_mit_tags.')#iU','<span style=\"background-color:yellow;\"><b>$1</b></span>',  $suchstring);
      #hier wird dem ganzen noch ein rahmen gegeben..wichtig ist
      #das U für ungreedy 
      ?>
      Aber wie gesagt ich habs netmal getestet und bin nichmehr besonders fitt


      Auf bald.....
      Vielleicht schau ich irgendwann nochmal hier im Forum vorbei.... immerhin war ich hier mal aktives Mitglied...
      Die Musikreview Seite

      hi, i'm a signature virus. copy me into your signature to help me spread.

      Kommentar


      • #18
        @Indigo

        Dein Script funktioniert wenn man z.B. nach "sit" sucht, aber nicht wenn man nach "größer" oder dem formatierten "Lorem" sucht.

        Das Umlautproblem wurde aber bereits oben schon gelöst, durch die einfache htmlentities() Funktion.

        Es sei denn, da ist mal wieder irgend ein verborgener Fallstrick.


        @Tartax

        Duhaschdada ... Duhasch... str_len gschriebn un nich strlen

        Unabhängig davon, klappts auch nicht


        Also noch immer

        P.S: Die unsachgemäße Anwendung von Smilies kann zu komplexen Denkirritationen führen

        Kommentar


        • #19
          Das Board escaped - so scheint mir einige Backslashes - deshalb hänge ich das Script einfach mal an.

          Und mit htmlentities funktioniert es eben NICHT, da der eigentliche Umlaut überhaupt nicht ans Script geliefert wird.

          ä wird in "%C3%A4" umgewandelt, somit wird es nicht im Suchstring gefunden. urldecode fällt aussen vor, deshalb habe ich mich beim Einsatz auf meinen Internetpräsenzen für eine eigene Art der Kodierung des Parametes entschieden - jedem sei es überlassen das Script seinen Vorstellungen gemäß anzupassen.

          Dein Script funktioniert wenn man z.B. nach "sit" sucht, aber nicht wenn man nach "größer" oder dem formatierten "Lorem" sucht.
          Teste es noch einmal an Hand des Scripts im Anhang, es funktioniert 100%.
          Zuletzt geändert von Indigo; 07.02.2005, 10:10.

          Kommentar


          • #20
            Hmm, ich mag das vBulletin von Tag zu tag weniger. Warum bietet es nicht die Möglichkeit des nachträglichen Editierens von Anhängen...

            Aber hier isses nun.
            Angehängte Dateien

            Kommentar


            • #21
              Original geschrieben von Indigo

              Und mit htmlentities funktioniert es eben NICHT, da der eigentliche Umlaut überhaupt nicht ans Script geliefert wird.
              Mein Script funktioniert auch mit Umlauten, obwohl es die htmlentities verwendet, allerdings und villeicht ist es das, was den Unterschied ausmacht. Benutze ich die ob_ Funktionen. Das heißt die Ausgabe wird bearbeitet, nicht der Quelltext vor der Ausgabe.

              Oder bezieht sich Deine Aussage auf Deine Lösung bezgl. des formatierten Suchwortes?


              Erst jetzt ist mir aufgefallen, dass Dein Script das Wort "Lorem" finden kann, allerdings markiert es nur das "Lo" gelb, der Rest wird nur fettgedruckt. Ich verstehe nicht warum das so ist. Ist das ein Feature oder ein Bug?

              Dein Script findet die ä's, aber nicht "größer" bzw. ö oder ß. Muss man Dein Script dahingehend erst erweitern? Auch bei der Angabe eines Suchwortes mit einem Ä wird das kleine ä nicht markiert.

              Kommentar


              • #22
                Original geschrieben von 123Dabei
                Mein Script funktioniert auch mit Umlauten, obwohl es die htmlentities verwendet, allerdings und villeicht ist es das, was den Unterschied ausmacht. Benutze ich die ob_ Funktionen. Das heißt die Ausgabe wird bearbeitet, nicht der Quelltext vor der Ausgabe.

                Oder bezieht sich Deine Aussage auf Deine Lösung bezgl. des formatierten Suchwortes?


                Erst jetzt ist mir aufgefallen, dass Dein Script das Wort "Lorem" finden kann, allerdings markiert es nur das "Lo" gelb, der Rest wird nur fettgedruckt. Ich verstehe nicht warum das so ist. Ist das ein Feature oder ein Bug?

                Dein Script findet die ä's, aber nicht "größer" bzw. ö oder ß. Muss man Dein Script dahingehend erst erweitern? Auch bei der Angabe eines Suchwortes mit einem Ä wird das kleine ä nicht markiert.
                Habe im Moment keinen Zugang zu meinem Server. Werde das Script jedoch heute abend zu Demonstrationszwecken online stellen.

                Auch das komplette Hinterlegen von Lorem funktioniert auf meinem Server einwandfrei, komisch...
                Auch Umlaute wie ä's, etc werden gefunden, vorher müssen diese jedoch bereits im Parameter in Entities umgewandelt werden (Sonderfall: & -> %amp; ).

                Kommentar


                • #23
                  So, ich habe eine Ehre zu verteidigen!!!
                  PHP-Code:
                  <?
                  $suchstring = "Hallo foo<i>b</bar><a href=\"foobar\">a</a>r wie geht es dir?";
                  $suchwort = "foobar";


                  echo preg_replace('#'.preg_replace("#.#","$0(<(.*)>)?",$suchwort).'#iU','<b>$0</b>',  $suchstring);
                  ?>
                  Und jetzt klappts auch! das foobar im href wird nicht markiert der rest schon... ich bitte meinen stiel und so zu entschuldigen, ich habe seit wochen kein PHP mehr gecodet nur Python und Java(grusel)
                  [edit]okay, um umlaute und so müßt ihr euch selber kümmern[\edit]
                  Die Musikreview Seite

                  hi, i'm a signature virus. copy me into your signature to help me spread.

                  Kommentar


                  • #24
                    @Tartax

                    Und jetzt klappts auch! das foobar im href wird nicht markiert der rest schon...
                    Öh... das kam bei mir raus, nur rein Dein Script....
                    PHP-Code:
                    Hallo foo<i>b</bar><a href="<b>foobar</b>">a</a>r wie geht es dir
                    Also Dein Script hat sich sowas von über das href foobar hergemacht, dafür aber das Foobar im Text fast verschont


                    @Indigo


                    Ich habe eine kleine Berichtigung bzgl. Deines Scriptes zu machen. Es findet "größer", allerdings nur wenn ich bereits die Htmlentities in der URL übergebe, aber das hast Du ja selbst schon geschrieben glaube ich. Aber dieses Lorem... dafür klappt das ja bei Tartax ... ach nee, auch nicht ...

                    Kommentar


                    • #25
                      Hast du es genauso kopiert? nicht zufällig den Ungreedy delimiter weggelassen?? Welche PHP version hast du? Das ist sehr komisch!

                      Aber der U-Delimiter hat bei mir früher auch schon öfters Probleme gemacht...aber so wies daunte steht arbeitet das ganze bei mir :/

                      EDIT:
                      meine Fresse... meine Rechtschreibung ,üßt ihr entschuldigen, der gehts heut garnet gut
                      Die Musikreview Seite

                      hi, i'm a signature virus. copy me into your signature to help me spread.

                      Kommentar


                      • #26
                        Hi,

                        ich verstehe lansam auch nichts mehr, kann ja irgend wie nicht sein. Also ich glaube schon, dass ich es richtig kopiert habe (nichts weggelassen und auch keine Zeilenumbrüche), bin extra an einen anderen Rechner gegangen. Auch dort klappt es weder über dessen Localhost (PHP 4.2.2), noch über einen Internetserver (Strato PHP 4.3.9). Strato spinnt zwar ganz gern rum, aber ....

                        Ich nehme mal an, dass Du es auch schon live getestet hast... *seufz Gleiches gilt wohl auch für Indigos Script ... das macht mich ein ganzklitzekleinbisschen nervös ...


                        Grüße

                        P.S. Durch die exzessive Nutzung der Smilies werden Konzentration und Stressabbau gefördert

                        Kommentar


                        • #27
                          Mhh das BB macht in meinen RegEx irgendwie leerzeichen rein... die müßt ihr rausnehmen
                          Die Musikreview Seite

                          hi, i'm a signature virus. copy me into your signature to help me spread.

                          Kommentar


                          • #28
                            BB? RegEx?

                            *huh?

                            Sagt mir momentan gar nichts.


                            Was ist mit den PHP Versionen?

                            Ich wollte doch nur...blabla Service... blabla Goodwill...

                            Kommentar


                            • #29
                              BB ist das Board hier, und RegEx = Regular Expression = Regulärer ausdruch, das ist dieses suchmuster...

                              Und zwar hat das BB unter anderem hinter das hier :"<(.*)>" leerzeichen gemacht!
                              Die Musikreview Seite

                              hi, i'm a signature virus. copy me into your signature to help me spread.

                              Kommentar


                              • #30
                                Hi,

                                kleiner Korrektur (in Deinem Suchstring war der Wurm drin - Kursiv-Tag) und eine Frage:

                                PHP-Code:
                                <?
                                $suchstring = "Hallo foo<i>b</i><a href=\"foobar\">a</a>r wie geht es dir?";
                                $suchwort = "foobar";


                                echo preg_replace('#'.preg_replace("#.#","$0(<(.*)>)?",$suchwort).'#iU','<span style="background-color:rgb(255,255,0)"><b>$0</b></span>',  $suchstring);
                                ?>
                                Es klappt, Gratulation und Schande über das BB, dass wirklich manchmal zu kreativ im
                                Script wütet. Doch wenn ich ref als Suchwort eingebe, findet es (das Script) das "ref" des "a href" auch lustig ist es,
                                wenn das Suchwort nur "a" lautet.

                                Ich habe bisher mit diesem Suchmuster gearbeitet (damit findet es keine HTML Befehle):

                                PHP-Code:
                                <? 
                                echo preg_replace("/((<[^>]*)|$suchwort)/ie", '"\2"=="\1"? "\1":"<span style=\"background-color:rgb($farbe1,255,0);\"><b>\1</b></span>"', $suchstring); 
                                ?>
                                Allerdings bin ich nicht in der Lage Dein Suchmuster mit diesem zu kombinieren
                                (ich habe es wirklich sehr oft versucht, dieses RegEx muss ein Sadist erfunden haben )

                                Danke im Voraus,

                                123Dabei

                                P.S. Natürlich hat BB wieder Leerzeichen in Dein Suchmuster eingefügt, vielleicht aber auch in meinem... *seufz

                                Kommentar

                                Lädt...
                                X