Problem mit strpos

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

  • 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
    Zitat von Jester_Prince Beitrag anzeigen
    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.

    Kommentar


    • #3
      Zitat von wahsaga Beitrag anzeigen
      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.
      Zuletzt geändert von Jester_Prince; 13.08.2009, 18: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

      Kommentar


      • #4
        Zitat von Jester_Prince Beitrag anzeigen
        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.

        Kommentar


        • #5
          Zitat von h3ll Beitrag anzeigen
          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

          Kommentar


          • #6
            Zitat von Jester_Prince Beitrag anzeigen
            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

            Kommentar


            • #7
              Zitat von Jester_Prince Beitrag anzeigen
              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.

              Kommentar


              • #8
                Zitat von Kropff Beitrag anzeigen
                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

                Kommentar


                • #9
                  Zitat von Jester_Prince Beitrag anzeigen
                  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!
                  Zuletzt geändert von Jester_Prince; 13.08.2009, 19: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

                  Kommentar

                  Lädt...
                  X