Avatar billede mstorgaard Praktikant
17. november 2007 - 13:53 Der er 4 kommentarer og
1 løsning

Tjekke om string indeholder to ord i PHP

Jeg har en string, som jeg gerne vil have tjekket om indeholder to ord i vilkårlig rækkefølge, og muligvis med andre ord imellem dem.

Jeg benytter preg_match.

Fx hvis jeg søger på "dig hej", så skal den finde et true resultat, selvom string hedder "hej med dig".
Avatar billede nielle Nybegynder
17. november 2007 - 20:23 #1
Sådan?

$tekst = 'Fx hvis jeg søger på "dig hej", så skal den finde et true resultat, selvom string hedder "hej med dig".';

$ord1 = 'hej';
$ord2 = 'dig';
$pattern = '/^(?=.*?\b' . $ord1 . '\b)(?=.*?\b' . $ord2 . '\b).*$/i';

if (preg_match($pattern, $tekst)) {
    // Yeah!
} else {
    // Desværre...
}
Avatar billede mstorgaard Praktikant
17. november 2007 - 21:03 #2
Finder den så både resultater, hvor hej er forrest og hvor dig er forrest?
Avatar billede nielle Nybegynder
17. november 2007 - 21:14 #3
Ja.

Men afprøv det da selv. :^)
Avatar billede mstorgaard Praktikant
17. november 2007 - 22:53 #4
Det fungerer, smid et svar (:

Jeg har lavet min funktion, så den går ind og erstatter "AND" i søgeteksten med "\b(?=.*?\b", og så tilføjer den det i en preg_match:

$q = str_replace(' AND ', '\b)(?=.*?\b', $q);
$q = '^(?=.*?\b' . $q . '\b).*$';

if(preg_match("/" . $q . "/is", $string)) {
Avatar billede nielle Nybegynder
17. november 2007 - 22:57 #5
Nice! :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester