Hallo allemaal,

ik ben op zoek naar een manier om een tekst te doorzoeken met speciale characters.
bv. de zoekterm 'heel groot' moet niet alleen 'heel groot' geven, maar ook 'héél groot', 'heel gróót' en alle variaties daarop. (zoals Google het doet)

Moet ik zelf een workaround bouwen, bijvoorbeeld door alle speciale characters in zowel de zoekterm als de tekst tijdelijk te vervangen door 'normale' (bv áàâä => a) of is er een php-functie voor die ik nog nooit heb gevonden? :-)

alvast bedankt
De str_replace kan ik nog begrijpen, hoewel ik dan liever een preg_replace met regex gebruik, maar de htmpspecialchars zie ik niet. Dat vertaalt special chars wel, maar helpt me volgens mij niet bij het vinden van á, ä, à en â als ik op 'a' zoek. Of mis ik iets? :-)
misschien:
$string = str_replace("á","a",$string);
$string = str_replace("à","a",$string);
enz...?
Henk, die workaround had ik ook bedacht. Ik had alleen gehoopt dat er een andere (makkelijker, sneller) manier zou zijn. Een functie die het accent vergeet en alleen kijkt naar de letter of zo. Misschien moeten ze 'm maar eens uitvinden :-)

[size=xsmall]Toevoeging op 04/12/2010 19:24:51:[/size]

Het is niet fraai geworden, maar het werkt wel: alle diakritische tekens worden omgezet naar hun 'normale' evenknie. Voor wie het kan gebruiken:

<?php
function sp_replace($a){
$tg[1]="\x{00E0}|\x{00E1}|\x{00E2}|\x{00E3}|\x{00E4}|\x{00E5}|\x{0101}|\x{0103}|\x{0105}";
$tg[2]="\x{00E7}|\x{0107}|\x{0109}|\x{010B}|\x{010D}";
$tg[3]="\x{010F}|\x{0111}";
$tg[4]="\x{00E8}|\x{00E9}|\x{00EA}|\x{00EB}|\x{0113}|\x{0115}|\x{0117}|\x{0119}|\x{011B}";
$tg[5]="\x{011D}|\x{011F}|\x{0121}|\x{0123}";
$tg[6]="\x{0125}|\x{0127}";
$tg[7]="\x{00EC}|\x{00ED}|\x{00EE}|\x{00EF}|\x{0129}|\x{012B}|\x{012D}|\x{0131}";
$tg[8]="\x{012F}|\x{0135}";
$tg[9]="\x{0137}|\x{0138}";
$tg[10]="\x{013A}|\x{013C}|\x{013E}|\x{0140}|\x{0142}";
$tg[11]="\x{00F1}|\x{0144}|\x{0146}|\x{0148}|\x{014B}";
$tg[12]="\x{00F2}|\x{00F3}|\x{00F4}|\x{00F6}|\x{00F5}|\x{00F8}|\x{014D}|\x{014F}|\x{0151}";
$tg[13]="\x{0155}|\x{0157}|\x{0159}";
$tg[14]="\x{015B}|\x{015D}|\x{015F}|\x{0161}";
$tg[15]="\x{0163}|\x{0165}|\x{0167}";
$tg[16]="\x{00F9}|\x{00FA}|\x{00FB}|\x{00FC}|\x{0169}|\x{016F}|\x{016B}|\x{016D}|\x{0171}|\x{0173}";
$tg[17]="\x{00FD}|\x{00FF}|\x{0177}";
$tg[18]="\x{017A}|\x{017C}|\x{017E}";
$tg[19]="\x{00E6}";
$tg[20]="\x{0153}";
$tg[21]="\x{0133}";
$tg[22]="\x{00DF}";
$tg[23]="\x{00C0}|\x{00C1}|\x{00C2}|\x{00C3}|\x{00C4}|\x{00C5}|\x{0100}|\x{0102}|\x{0104}";
$tg[24]="\x{00C7}|\x{0106}|\x{0108}|\x{010A}|\x{010C}";
$tg[25]="\x{010E}|\x{0110}";
$tg[26]="\x{00C8}|\x{00C9}|\x{00CA}|\x{00CB}|\x{0112}|\x{0114}|\x{0116}|\x{0118}|\x{011A}";
$tg[27]="\x{011C}|\x{011E}|\x{0120}|\x{0122}";
$tg[28]="\x{0124}|\x{0126}|\x{00CC}|\x{00CD}|\x{00CE}|\x{00CF}|\x{0128}|\x{012A}|\x{012C}";
$tg[29]="\x{012E}|\x{0134}";
$tg[30]="\x{0136}";
$tg[31]="\x{0139}|\x{013B}|\x{013D}|\x{013F}|\x{0141}";
$tg[32]="\x{00D1}|\x{0143}|\x{0145}|\x{0147}|\x{014A}";
$tg[33]="\x{00D5}|\x{00D8}|\x{014C}|\x{014E}|\x{0150}";
$tg[34]="\x{0154}|\x{0156}|\x{0158}";
$tg[35]="\x{015A}|\x{015C}|\x{015E}|\x{0160}";
$tg[36]="\x{0162}|\x{0164}|\x{0166}";
$tg[37]="\x{00D9}|\x{00DA}|\x{00DB}|\x{00DC}|\x{0168}|\x{016E}|\x{016A}|\x{016C}|\x{0170}|\x{0172}";
$tg[38]="\x{0174}|\x{00DD}|\x{0178}|\x{0176}";
$tg[39]="\x{0179}|\x{017B}|\x{017D}";
$tg[40]="\x{00C6}";
$tg[41]="\x{0152}";
$tg[42]="\x{0132}";

$th[1]="a";$th[2]='c';$th[3]='d';$th[4]='e';$th[5]='g';$th[6]='h';$th[7]='i';$th[8]='j';$th[9]='k';$th[10]='l';$th[11]='n';
$th[12]='o';$th[13]='r';$th[14]='s';$th[15]='t';$th[16]='u';$th[17]='w';$th[18]='z';$th[19]='ae';$th[20]='oe';$th[21]='ij';
$th[22]='ss';$th[23]='A';$th[24]='C';$th[25]='D';$th[26]='E';$th[27]='G';$th[28]='H';$th[29]='J';$th[30]='K';$th[31]='L';
$th[32]='N';$th[33]='O';$th[34]='R';$th[35]='S';$th[36]='T';$th[37]='U';$th[38]='W';$th[39]='Z';$th[40]='AE';$th[41]='OE';
$th[42]='IJ';
for($i=1;$i<43;$i++){$a=preg_replace("/".$tg[$i]."/u",$th[$i],$a);}return $a;}
?>

Reageren