ganzen Satz im String

  • Ich durchsuche meine Db mit einen Script .

    Anstatt den ganzen Inhalt anzuzeigen soll er mir nur den Satz anzeigen wo das Wort gefunden wurde.


    Also mit Javascript geht es so

    Jetzt versuche ich das als php umzuschreiben.

    Kriege es aber nicht ganz auf der Kette.

    Kann mir mal einer helfen oder den richtigen denk anstoß geben?

  • Eigentlich wollte ich keine versuche zeigen,weil irgendeiner immer rummeckert.

    Habe es ja hinbekommen wie ich es haben will,aber es werden Fehler rausgeworfen,wegen veralteten Code.

    Nehme ich den neueren Code ,kommen wieder andere Fehler und Funktioniert nicht mehr.


    Warum muß Php eigentlich so kompliziert sein ?????

    Wie oft ändert php eigentlich seine Codes??

    Man ließt öfters das was veraltet ist und dafür was neues kommt. Warum läst man es nicht einfach so ???.


    Naja egal.

    Hier der Code der Functioniert.

    Code
    1. $a3='Suchwort';
    2. $rein1=eregi_replace($a3, '\\0', substr($row['inhalt'], strrpos(substr($row['inhalt'], 0, stripos($row['inhalt'], $a3)), " "), 200)).'<br />';
    3. $rein1= htmlspecialchars ($rein1);
    4. $text= preg_replace("/((<[^>]*)|$a3)/ie", '"\2"=="\1"? "\1":"<span style=\"background-color:rgb(55,255,0);\"><b>\1</b></span>"', $rein1);

    Aber mit folgenen Fehlern.

  • Ich frage mich gerade, wie du einen Satz finden willst?


    Ein ? oder ! sind ja kein Problem, da weiß man, das der Satz zu 99,9% beendet ist. Aber der Punkt wird Probleme machen bei z.B.


    "Guten Tag. Ich habe ca. 100 mal mal gesagt, dass es Rechtschreibkorrekturen gibt."


    Wenn du jetzt nach "dass" suchst, wie willst du da den Satzanfang finden, da ja schon ein Punkt bei ca. steht?

  • Ich frage mich gerade, wie du einen Satz finden willst?

    Ein ? oder ! sind ja kein Problem, da weiß man, das der Satz zu 99,9% beendet ist. Aber der Punkt wird Probleme machen bei z.B.

    "Guten Tag. Ich habe ca. 100 mal mal gesagt, dass es Rechtschreibkorrekturen gibt."

    Wenn du jetzt nach "dass" suchst, wie willst du da den Satzanfang finden, da ja schon ein Punkt bei ca. steht?

    Stimmt! Deswegen habe ich mir gedacht ich lese die nächsten 200 Zeichen ein und fertig.Bzw wollte ich davor ein paar Zeichen und danach ein paar Zeichen einlesen. Somit kann man sich vieleicht auch denken was da steht.

    Da ich ja den Quelltext zum suchen nehme ,könnte ich ja auch von p,li,h1 usw suchen. So habe ich den abschnitt zwischen den p oder li .wäre aber auch nicht Perfekt da so ein <p> ja mal 1000 wörter drinn sein könnte.


    Deswegen entscheide ich mich,ich gehe zum <p>,<h1> usw zurück und lese von da 200 Zeichen ein.

    Der Vorteil ist bei der Tabellen ausgabe ,das die Zeilen immer gleich groß sind und Optisch vieleicht besser rüber kommt.


    Nachteil ist,wenn das Suchwort am ende des Satzes kommt und nicht innerhalb der 200 Zeichen Grenze ist.Dann steht da ein Satz ohne das das Suchwort vorhanden ist.


    Alles Mist! Eine Optimale Lösung habe ich noch nicht ;(


    Ich ziehe mir erstmal dein Link rein das ich erstmal die Fehler weg habe und es erstmal läuft.

    Die Optimale Lösung muß ich dann noch suchen

  • Siehe http://php.net/manual/de/function.eregi-replace.php und achte auf die Warnung

    Ergibt irgendwie kein sinn. Im Link steht was von

    Die ganzen Beispiele da benutzen das auch.

    Das benutze ich schon und das ist laut Fehler veraltet. Was soll man sonst verwenden?


    Bekomme zwar die Fehler ab und zu weg ,doch dann geht nix mehr .Es wird dann nix ausgegeben und nix markiert

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von basti1012 ()

  • Ergibt irgendwie kein sinn.

    Hää???


    Da steht doch ganz genau, was du machen sollst!

  • Was soll ich jetzt tun ? Eine ältere php Version auf den server installieren ?


    Und die Alternative macht bei mir gar nix.

    Deswegen habe ich

    str_replace() genommen .

    Bei pregh_replace() bekomme ich gar keine Ausgabe mehr,also Code läuft nicht.


    Somit habe ich nur noch ein Fehler und der Code läuft trotzdem noch.

    Code
    1. Deprecated: Function ereg_replace() is deprecated in /users/sebastian1012/www/homepagebasti1012/besucherzahler/besucher_history.php on line 148
  • Somit habe ich nur noch ein Fehler und der Code läuft trotzdem noch.

    Genau! Sch... was auf Fehler, was will das blöde PHP denn auch von dir??!! Eine echte Unverschämtheit von PHP dich mit Warnings zu belästigen!!! Zumal du die anscheinend ja sowieso nicht verstehst.


    :cursing: Kopfschüttel :cursing:


    Zitat

    Was soll ich jetzt tun ?

    Es zur Abwechslung mal richtig machen?

  • Gibt es hier eigentlich keine Leute die Php können und ein helfen können und nicht nur die Fehler zurück posten.

    Es zur Abwechslung mal richtig machen?

    Wenn ich es könnte würde ich bestimmt nicht fragen,

    Ist ja auch sinn eines Forums.Aber für php hilfe ist man hier falsch ,das habe ich mitlerweile auch begriffen.

  • Aber für php hilfe ist man hier falsch ,das habe ich mitlerweile auch begriffen.

    Du hast schon reichlich Hilfe von mir bekommen, aber bei dir endet fast jeder Thread in einer "Never ending story", weil du anscheinend nicht konzentriert an einer Sache arbeitest und/oder die Doku nicht richtig liest. Das macht auf Dauer einfach keinen Spaß und manchmal auch keinen Sinn!

  • Guten Morgen,


    basti1012 :


    Zitat


    Gibt es hier eigentlich keine Leute die Php können und ein helfen können und nicht nur die Fehler zurück posten.

    Du siehst doch, dass die Funktion deprecated, also veraltet, ist. Daher ist es nicht empfehlenswert diese Funktion zu verwenden. Wenn du die Funktion bei Version 7.0 verwendest kommt natürlich ein Error, da diese Function aus PHP entfernt wurde.


    Suchbegriffe für eine ähnliche Funktion ist z.b. : "php wort in text suchen". Da bekommst du zwei Anzeigen in Forums und ab der 3ten kommen dann mögiche alternative Funktionen.


    Desweiteren sollte man Notices, Warnings und Errors nicht ignoieren. Somit wird deine Seite auch nicht besser, und du wirst ineffektiv und vergeudest viel Zeit, welche du für was besseres nutzen könntest.


    Zitat


    Ist ja auch sinn eines Forums.Aber für php hilfe ist man hier falsch ,das habe ich mitlerweile auch begriffen.

    Für PHP-Hilfe bist du hier nicht falsch. Ganz und garnicht. Dafür gibt es ja dieses PHP-Abteil in diesem Forum. Für Fragen oder Probleme die ein User hat.

    Ergibt irgendwie kein sinn. Im Link steht was von

    Die ganzen Beispiele da benutzen das auch.

    Das benutze ich schon und das ist laut Fehler veraltet. Was soll man sonst verwenden?


    Bekomme zwar die Fehler ab und zu weg ,doch dann geht nix mehr .Es wird dann nix ausgegeben und nix markiert

    Du siehst doch bei der Funktion ereg_replace(), dass diese veraltet ist und bereits aus PHP 7.0 entfernt wurde. Klar haben beide Funktionen das gleiche Nutzen. Nur eine Function ist eben veraltet und aus PHP entfernt. Dann kann man doch ohne Probleme einfach die vorgeschlagene Alternativfunktion nehmen, die nicht veraltet ist und auch in PHP 7.0 verwendet wird. Brauchst du ja einfach umzuändern und die Parameter gegebenfalls anzupassen. Und fertig ist es. Dann hast du eine Function die auch funktioniert und keine Errors mehr anzeigt.

    Ich muss m.scatello auch recht geben. Deine Einstellung "Egal ob solche Meldungen wie Notices, Warnings" kommen es funktioniert eh. Warum soll ich denn da was ändern? Mit dieser Einstellung wirst du irgendwann über deine eigene Beine fliegen.


    Grüße,

    Stef

  • ja ,ich habe die alternative genommen und jetzt geht nix mehr.

    Steht da oben irgendwo.

    preg_replace wird ja als alternative vorgeschlagen. Die fehler sind weg und der Code geht nicht mehr.

    Tolle alternative

  • basti1012 ... warum machst du dir das Leben unnötig schwer und plagst dich mit 'veralteten' Funktionen und irgendwelchen seltsamen regulären Ausdrücken herum. Das Problem ist doch trivial! Du willst einen 'kompletten' Satz (alles zwischen Satzzeichen - und oder Anfang/ Ende des Strings) extrahieren - oder habe ich das falsch verstanden.

    Dann musst du doch bloß mit 'strpos()' die Position Suchwortes bestimmen,

    dann mit 'strripos()' nach links von der gefunden Position die Position des letzten Vorkommens eines Satzzeichen (oder Stringanfang) bestimmen,

    dann mit 'strpos()' die nächst folgende Position (oder Stringende) finden.

    Dann hast du Anfangs- und Endposition deines Satze und kannst den mit 'substr()' ausgeben!

    http://php.net/manual/de/function.strpos.php

    http://php.net/manual/de/function.strripos.php

    http://php.net/manual/de/function.substr.php

  • Sailor

    Sind wir doch mal ehrlich, besonders genau kann das sowieso nicht gehen. Deshalb würde ich gar nicht nach Satzzeichen suchen, sondern die Position des Treffers nehmen und einfach x Zeichen davor und x Zeichen danach nehmen. Dann nach am Anfang und am Ende "..." einbauen und gut ist. Vielleicht noch den Suchbegriff einfärben, wenn man es bunt mag. Aber Satzzeichen suchen, nee never ever.

  • m.scatello Wäre natürlich eine (einfache) Alternative, die auch einfacher zu realisieren wäre... aber des Menschen Wille ist sein Himmelreich und wenn basti1012 danach fragt, dann will ich ihm zumindest einen Ansatz geben, wie man es machen könnte.

    Ob er das dann nutzt, bleibt ihm natürlich selbst überlassen - und die Problematik und ggf Ungenauigkeit (zB ca. / ggf./...), die sich aus dieser Methode ergeben, muss man dann natürlich in Kauf nehmen.