Ik heb een query die woorden uit de database haalt die de letters bevatten die in de string zitten.
$str_search = 'kbleismtr';
$otvsql = "SELECT woord FROM woorden_feud WHERE woord REGEXP '^[{". mysqli_real_escape_string($DBconn, $str_search)."}]+$'";
// Haalt bv de woorden klim, biet, trim ect op
Nu wil ik de vraagteken ? als wildcard gebruiken, dus als mensen deze erbij invoeren dat er wordt gezocht met de letters:
$str_search = 'kbleismtra'; // met a erbij
$str_search = 'kbleismtrb'; // met b erbij
$str_search = 'kbleismtrc'; // met c erbij
Tot en met z.
Nu zat ik te denken om dat met een foreach loop te doen met de letters a tot en met z maar dat gaat niet ivm de laadtijd.
Hoe kan ik de REGEXP aanpassen dat er woorden opgehaald kunnen worden met een wildcard.
Even wat dingen duidelijk krijgen:
- Waarom staan die accolades d'r in ( ^[letters]+$ is voldoende)?
- Als je zoekt op de letters 'hio' vind je nu 'hoi', maar ook 'hooi'. Is dat de bedoeling (ik zie een verwijzing naar Word Feud - volgens mij heb je daar een beperkte collectie letters, net als bij Scrabble)?
- Moeten alle letters d'r in zitten, of zoek je gewoon alle woorden met 1 of meer van de letters (zo werkt het nu - dus met je voorbeeld van 'kbleismtr' vind je 'mis', 'blik', 'klemt', enz)?
Als de positie van de ontbrekende letter(s) vast is, zou je ook LIKE kunnen gebruiken in combinatie met de underscore (_)? Een underscore duidt een enkel karakter aan.
In bovenstaande situatie wordt dat dus zoiets als ... WHERE woord LIKE 'kbleismtr_' ...