Ik ben bezig met een hobbyproject waar in een MySQL database namen staan met speciale tekens zoals:
Beurré van den Ham, Marie Joseph d'Othée, Åkerö etc. In mijn zoekquery gebruik ik een LIKE: fbn.naam LIKE ? . Bij de inputparameters zet ik er een % voor en achter.
Dit geheel werkt an sich prima. Als ik zoek op "Beur" dan vind ik alle namen die daarmee beginnen. Echter als ik "Beurre" in typ ( dus zonder accent aigu ) dan wordt er niets gevonden. Wat logisch is aangezien Beurre != Beurré .
Ik heb SOUNDS en SOUNDEX geprobeerd. Dit werkt prima als je zoekt op de volledige naam waarbij Beurré van der Ham gelijk is aan Beurre van der Ham. Alleen werkt dit niet met het zoeken van delen in een string.
Nu zou ik in de tabel een extra veld kunnen maken die alle speciale tekens weg filtert en dan die kolom gebruiken in de LIKE maar dan is de eerste vraag hoe ik in PHP of MYSQL al die tekens weg kan filteren.
En ik hoop eigenlijk op een iets elegantere oplossing dan dit. Iemand een suggestie hoe ik dit in PHP of in de MySQL query kan oplossen?
Beurré van den Ham, Marie Joseph d'Othée, Åkerö etc. In mijn zoekquery gebruik ik een LIKE: fbn.naam LIKE ? . Bij de inputparameters zet ik er een % voor en achter.
Dit geheel werkt an sich prima. Als ik zoek op "Beur" dan vind ik alle namen die daarmee beginnen. Echter als ik "Beurre" in typ ( dus zonder accent aigu ) dan wordt er niets gevonden. Wat logisch is aangezien Beurre != Beurré .
Ik heb SOUNDS en SOUNDEX geprobeerd. Dit werkt prima als je zoekt op de volledige naam waarbij Beurré van der Ham gelijk is aan Beurre van der Ham. Alleen werkt dit niet met het zoeken van delen in een string.
Nu zou ik in de tabel een extra veld kunnen maken die alle speciale tekens weg filtert en dan die kolom gebruiken in de LIKE maar dan is de eerste vraag hoe ik in PHP of MYSQL al die tekens weg kan filteren.
En ik hoop eigenlijk op een iets elegantere oplossing dan dit. Iemand een suggestie hoe ik dit in PHP of in de MySQL query kan oplossen?
Duurzame nerd. Veel comfort en weinig verbruiken. Zuinig aan doen voor de toekomst.