alif Geschrieben 30. Mai 2006 Teilen Geschrieben 30. Mai 2006 Moin Zusammen. Folgendes: Ich habe eine variable $text mit dem Beispiel Inhalt: $text = "Hallo das hier ist ein Test-Text"; Ich prüfe dann mit preg_match ob ein paar Suchbegriffe in der variable $text auftauchen oder nicht. if(preg_match("((Hallo ).(das ).(hier ))", $text )) ... Das klappt auch soweit, solange die Reinfolge der Suchbegriffe stimmt. Nun möchte ich aber, das so haben, dass die reinfolge der Suchwörter egal ist... Z.B: if(preg_match("((hier ).(Text).(Hallo ))", $text )) ... Das klappt aber nicht. Ich habe es auch schon mit ".*" zwischen den Suchbegriffen versucht, aber das wollte auch nicht. Kann mir da jemand weiterhelfen??? Danke im Voraus... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
londo Geschrieben 30. Mai 2006 Teilen Geschrieben 30. Mai 2006 if(preg_match("(Test|das|Hallo)", $text )) ... das sollte dein problem lösen.....mit /i dahinter kannste noch die groß/kleinschreib-prüfung ändern. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
alif Geschrieben 30. Mai 2006 Autor Teilen Geschrieben 30. Mai 2006 das sollte dein problem lösen.....mit /i dahinter kannste noch die groß/kleinschreib-prüfung ändern. Danke erstmal für deine Antwort. Allerdings ist das nicht ganz die Lösung. Die "|" sind doch ODER-Verknüpfungen. Ich benötige aber UND-Verknüpfungen um zu sehen ob alle Suchbegriffe im Text vorkommen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
londo Geschrieben 30. Mai 2006 Teilen Geschrieben 30. Mai 2006 aso aso hmmm da fällt mir grad spontan nichts anderes ein, als jeden suchbegriff einzeln zu definieren. quasi if (preg_match("(Test)", $test) AND preg_match("(Hallo)", $test)) { ... na mal schauen ob mir noch was einfällt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
alif Geschrieben 30. Mai 2006 Autor Teilen Geschrieben 30. Mai 2006 Die Idee hatte ich auch schon. Aber leider kommt das auch nicht wirklich in Frage, weil das etwas Performance lastig werden kann. Denn in der eigentlichen Anwendung ist mein Text viel länger und die Suchbegriffe sind auch um einiges mehr... Und dann passiert das auch noch in einer Schleife wo es sehr viele verschiedene Texte und Suchbegriffe gibt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Unique86 Geschrieben 30. Mai 2006 Teilen Geschrieben 30. Mai 2006 Die Idee hatte ich auch schon. Aber leider kommt das auch nicht wirklich in Frage, weil das etwas Performance lastig werden kann. Werden kann - ich denke du benutz einen Apache oder ? Der Apache merkt doch erst ab nem 5 Stelligem User vorkommen das überhaupt was gemacht werden muss . Wenn du nicht gerade ne 1ghz maschiene mit 256 Ram hast, wobei das sogar mit nem schmalem system völlig ausreichen sollte .... gruss sven Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
alif Geschrieben 30. Mai 2006 Autor Teilen Geschrieben 30. Mai 2006 Der Apache merkt doch erst ab nem 5 Stelligem User vorkommen das überhaupt was gemacht werden muss . Joa... stimmet ja schon, aber! Aufm dem Server wo das eingesetzt werden soll ist die Besucherzahl zur Zeit (noch) im 4 Stelligem Bereich. Und als Azubi soll man ja auch lernen (bzw. wird gezwungen) vorausschauend zu arbeiten. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
londo Geschrieben 30. Mai 2006 Teilen Geschrieben 30. Mai 2006 <?php $text = "Hallo das ist ein Test"; $array = array(1=> "Test", "Hallo", "das"); for($i=1;$i<=count($array);$i++) { if(ereg(($array[$i]),$text)) { $erg = 1; }else { $erg = 0; break; } } if ($erg) { echo "Suchmuster stimmt überein"; }else { echo "Suchmuster stimmt nicht überein!"; } ?>[/PHP] so oder so ähnlich würde ich mir das jetzt dann denken. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Unique86 Geschrieben 30. Mai 2006 Teilen Geschrieben 30. Mai 2006 na okay überredet ich hab mal die php docs durchwühlt zitat : "Tipp: Verwenden Sie nicht preg_match(), wenn Sie nur überprüfen wollen, ob eine Zeichenkette in einer anderen Zeichenkette enthalten ist. Verwenden Sie dafür stattdessen die Funktionen strpos() oder strstr(), die das schneller erledigen." aber ich habs doch anders gelöst .... vllt. so ?! $string = "hier Test Hallo"; $string = explode(" ",$string); $suchwoerter = array("Hallo","hier","Test"); foreach($suchwoerter as $k) { for($i=0;$i<=count($string);$i++) { if($k == $string[$i]) echo "jopp"; } } [/PHP] gruss sven Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
alif Geschrieben 30. Mai 2006 Autor Teilen Geschrieben 30. Mai 2006 Hmm.. Es scheint ja schon fast so, dass es erstmal nur durch die Schleifen-Lösung machbar ist. Ich lasse einfachmal den Hardcoretest laufen Mal sehen was dann die Server Statistiken sagen. Danke nochmals für die Hilfe. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
alif Geschrieben 30. Mai 2006 Autor Teilen Geschrieben 30. Mai 2006 Nach langem grübeln habe ich das nun so gelöst: <?php $name = "Hallo das hier ist ein Test"; $suche = "Test ist das"; $name = explode(' ', $name); sort ($name); $name = implode(' ', $name); $suche = explode(' ', $suche); sort ($suche); $suche = implode('.*', $suche); if(preg_match("/$suche/i", $name)){ echo "Stimmt"; } ?>[/PHP] Ich bringe die beiden Zeichenkette in alphabetischer Reihnfolge und schaue dann ob sie passen. Bis jetzt scheint das zu funktionieren. Vielleicht nicht grade schön, aber selten Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Unique86 Geschrieben 30. Mai 2006 Teilen Geschrieben 30. Mai 2006 Nach langem grübeln habe ich das nun so gelöst: <?php $name = "Hallo das hier ist ein Test"; $suche = "Test ist das"; $name = explode(' ', $name); sort ($name); $name = implode(' ', $name); $suche = explode(' ', $suche); sort ($suche); $suche = implode('.*', $suche); if(preg_match("/$suche/i", $name)){ echo "Stimmt"; } ?>[/PHP] Ich bringe die beiden Zeichenkette in alphabetischer Reihnfolge und schaue dann ob sie passen. Bis jetzt scheint das zu funktionieren. Vielleicht nicht grade schön, aber selten Sind wir nicht alle ein bisschen bluna ? ist doch okay solange der spagetthi-code funzt gruss sven Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 30. Mai 2006 Teilen Geschrieben 30. Mai 2006 auf jeden fall besser als mit ereg... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gast freescale Geschrieben 30. Mai 2006 Teilen Geschrieben 30. Mai 2006 Wie wäre es den mit diesem Ausdruck? $regExWords = "(Hallo)(das)(hier)"; $regExPattern = "([".$regExWords."] ?){3}"; if(preg_match($regExPattern, $text )) ... [/php] Müsste eigentlich funktionieren... -- * http://de.wikipedia.org/wiki/RegExp Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
alif Geschrieben 31. Mai 2006 Autor Teilen Geschrieben 31. Mai 2006 Wie wäre es den mit diesem Ausdruck? Moin, danke für deine Antwort. Aber ich bekomme daduch einen Fehler ausgegeben: Warning: preg_match(): Unknown modifier '{' ... Wenn ich die modifier ändere, dann funktioniert dasaber leider auch nicht so ganz wirklich. Ausserdem glaube ich, dass selbst wenn das funktionieren würde, dann aber durch die Änderung der Rehinfolge der Suchwörter das dann aber wiederum nicht klappen würde. Naja, das ganze hat sich aber auch schon geklärt. Thx an alle Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.