Zum Inhalt springen

PHP: Regulärer Ausdruck -> mehrere Begriffe Suchen


Empfohlene Beiträge

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...

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

:) 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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

:) 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 :D . Wenn du nicht gerade ne 1ghz maschiene mit 256 Ram hast, wobei das sogar mit nem schmalem system völlig ausreichen sollte ....

gruss sven

Link zu diesem Kommentar
Auf anderen Seiten teilen

Der Apache merkt doch erst ab nem 5 Stelligem User vorkommen das überhaupt was gemacht werden muss :D .

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. ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

<?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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

na okay ;) überredet :P

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :D

Sind wir nicht alle ein bisschen bluna ? ;)

ist doch okay solange der spagetthi-code funzt :D

gruss sven

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...