Problem mit strpos

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem mit strpos

    Moin,

    ich bin zwar kein blutiger Anfänger mehr aber noch weit entfernt davon, richtig gut zu sein. Trotzdem hab ich mich mal daran gemacht, einen Blog zu programmieren. Eine gute Idee, denn ich habe bereits eine Menge gelernt und die wichtigsten Blog-Funktionen bereits fertig. Trotzdem habe ich ein Problem, das ich auch mithilfe des treuen PHP Manuals nicht lösen konnte.

    Gegenstand:

    Zur Zeit arbeite ich an einer Suchfunktion. Wenn ich zum Beispiel als suchbegriff "bla" eingebe, dann soll mein Script, sofern es passende Einträge findet, diese auf folgende Weise formatiert zurückgeben:

    - es soll einen Textausschnitt liefern, der jeweils bis zu 30 Zeichen vor und nach dem ersten auftauchen des Suchwortes mit einschließt

    - es soll darin das Suchwort in <strong> Tags einschließen

    - und den auf diese Weise formatierten Text schließlich ausgeben


    Das Problem:

    Wenn ich bspw. so scripte:
    Code:
    echo strpos($eintrag, $suchwort)
    dann gibt mit PHP die strpos mit einem riesig großen Wert an, der unmöglich die strpos sein kann (3691647).

    Da ich nun den jeweiligen Eintrag zunächst aus einer MySQL Tabelle auslese, habe ich mir auch erlaubt, meine Frage im SQL / Datenbanken Forum zu posten. Die Admins mögen ihn bitte verschieben, falls sie der Meinung sein sollten, er sei hier falsch.

    hier noch der Code, indem sich mein Fehler verstecken muss:
    Code:
    while($row = $result->fetch_object()) {
    
        $entry = $row->entry;
    
        if($pos = strpos($entry, $search_str)) {
    
            echo $pos;
    
            $min_pos = $pos - 30;
            $max_pos = $pos + 30;
    
            $entry_piece = substr($row->entry, $min_pos, $max_pos);
    
            $entry_piece = str_replace($search_str,  "<strong>".$search_str."</strong>", $entry_piece);
    
            $entry_piece = "\"..." . trim($entry_piece) . "...\"";
    
            echo "<div class=\"searchResult\"><h2>";
            echo "<a href=\"" . ROOT_URL . "?area=main&amp;page_id=" . $row->entry_id . "&amp;" . SID . "\">";
            echo $row->title . "</a></h2>\n";
            echo "<p>" . $entry_piece . "</p></div>\n";
    
        }
    }

    1. Ja, ich habe die entsprechenden Einträge im Manual gelesen. Google habe ich auch benutzt. Das mache ich immer zuerst, wenn ich eine Frage habe, denn ich habe zu Glück das selbstständige Denken gelernt, sonst würde ich nicht fragen
    2. Ja, ich besitze den erstzunehmenden Ehrgeiz, die Dinge, nach denen ich frage, auch zu begreifen und/oder begreifen zu lernen, sonst würde ich nicht fragen


  • #2
    Originally posted by Jester_Prince View Post
    Wenn ich bspw. so scripte:
    Code:
    echo strpos($eintrag, $suchwort)
    dann gibt mit PHP die strpos mit einem riesig großen Wert an, der unmöglich die strpos sein kann (3691647).
    Bei welchen Daten?

    Da ich nun den jeweiligen Eintrag zunächst aus einer MySQL Tabelle auslese, habe ich mir auch erlaubt, meine Frage im SQL / Datenbanken Forum zu posten. Die Admins mögen ihn bitte verschieben, falls sie der Meinung sein sollten, er sei hier falsch.
    Done.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Comment


    • #3
      Originally posted by wahsaga View Post
      Bei welchen Daten?
      $eintrag ist dabei ein Blog-Eintrag aus einer MySQL Tabelle.

      Das hätte ich natürlich dazu erwähnen müssen, entschuldigung.

      EDIT: In der Datenbank sind zu Testzwecken lediglich 6 Blog-Einträge als BLOBs vorhanden, von denen der größte (mit Leerzeichen und HTML-Tags) nur 6032 Zeichen hat.
      Last edited by Jester_Prince; 13-08-2009, 17:34.

      1. Ja, ich habe die entsprechenden Einträge im Manual gelesen. Google habe ich auch benutzt. Das mache ich immer zuerst, wenn ich eine Frage habe, denn ich habe zu Glück das selbstständige Denken gelernt, sonst würde ich nicht fragen
      2. Ja, ich besitze den erstzunehmenden Ehrgeiz, die Dinge, nach denen ich frage, auch zu begreifen und/oder begreifen zu lernen, sonst würde ich nicht fragen

      Comment


      • #4
        Originally posted by Jester_Prince View Post
        Wenn ich bspw. so scripte:
        Code:
        echo strpos($eintrag, $suchwort)
        dann gibt mit PHP die strpos mit einem riesig großen Wert an, der unmöglich die strpos sein kann (3691647).
        Wieso unmöglich?

        Mach mal:
        PHP Code:
        printf('<div>%d / %d</div>'strpos($eintrag$suchwort), strlen($eintrag)); 
        Und zeig die Ausgabe.

        Comment


        • #5
          Originally posted by h3ll View Post
          Wieso unmöglich?

          Mach mal:
          PHP Code:
          printf('<div>%d / %d</div>'strpos($eintrag$suchwort), strlen($eintrag)); 
          Und zeig die Ausgabe.

          Sehr geil!

          Darauf wäre ich (zumindest so schnell) nicht gekommen. Danke für den guten Denkanstoß!

          EDIT: Für mich wäre die Frage damit beantwortet!

          1. Ja, ich habe die entsprechenden Einträge im Manual gelesen. Google habe ich auch benutzt. Das mache ich immer zuerst, wenn ich eine Frage habe, denn ich habe zu Glück das selbstständige Denken gelernt, sonst würde ich nicht fragen
          2. Ja, ich besitze den erstzunehmenden Ehrgeiz, die Dinge, nach denen ich frage, auch zu begreifen und/oder begreifen zu lernen, sonst würde ich nicht fragen

          Comment


          • #6
            Originally posted by Jester_Prince View Post
            Darauf wäre ich (zumindest so schnell) nicht gekommen. Danke für den guten Denkanstoß!

            EDIT: Für mich wäre die Frage damit beantwortet!
            Dann lass auch andere bitte an deiner Erleuchtung teilhaben. Ist für die gedacht, die später mal ein ähnliches Problem haben.

            Danke
            Peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Comment


            • #7
              Originally posted by Jester_Prince View Post
              Sehr geil!

              Darauf wäre ich (zumindest so schnell) nicht gekommen. Danke für den guten Denkanstoß!

              EDIT: Für mich wäre die Frage damit beantwortet!
              Für uns aber nicht. Einen kurzen Kommentar, was eigentlich der Fehler war, solltest du schon abgeben.

              Comment


              • #8
                Originally posted by Kropff View Post
                Dann lass auch andere bitte an deiner Erleuchtung teilhaben. Ist für die gedacht, die später mal ein ähnliches Problem haben.

                Danke
                Peter

                Aber sicher! Sobald ich den Denkanstoß vollständig zu Ende verfolgt habe

                In ein paar Minuten folgt die Antwort.

                1. Ja, ich habe die entsprechenden Einträge im Manual gelesen. Google habe ich auch benutzt. Das mache ich immer zuerst, wenn ich eine Frage habe, denn ich habe zu Glück das selbstständige Denken gelernt, sonst würde ich nicht fragen
                2. Ja, ich besitze den erstzunehmenden Ehrgeiz, die Dinge, nach denen ich frage, auch zu begreifen und/oder begreifen zu lernen, sonst würde ich nicht fragen

                Comment


                • #9
                  Originally posted by Jester_Prince View Post
                  Aber sicher! Sobald ich den Denkanstoß vollständig zu Ende verfolgt habe

                  In ein paar Minuten folgt die Antwort.
                  Die versprochene Antwort:

                  Mein Fehler war, dass ich kein Trennzeichen (in deinem Beispiel der Slash) benutzt habe, der Suchbegriff aber auf zwei Blogeinträge zutraf. Somit hat mir mein Script zwar beide Stringpositionen korrekt ausgegeben, da aber nun beide Stringpositionen ohne Leer- oder Trennzeichen ausgegeben wurden, habe ich die beiden Zahlen für eine gehalten.

                  Noch einmal danke für die schnelle und kompetente Hilfe!
                  Last edited by Jester_Prince; 13-08-2009, 18:42.

                  1. Ja, ich habe die entsprechenden Einträge im Manual gelesen. Google habe ich auch benutzt. Das mache ich immer zuerst, wenn ich eine Frage habe, denn ich habe zu Glück das selbstständige Denken gelernt, sonst würde ich nicht fragen
                  2. Ja, ich besitze den erstzunehmenden Ehrgeiz, die Dinge, nach denen ich frage, auch zu begreifen und/oder begreifen zu lernen, sonst würde ich nicht fragen

                  Comment

                  Working...