zoeken en speciale characters
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
http://www.php.net/manual/en/function.str-replace.php)
Maar ook met htmlspecialchars (zie: http://php.net/manual/en/function.htmlspecialchars.php)
Je kunt het inderdaad met str_replace doen (zie: Maar ook met htmlspecialchars (zie: http://php.net/manual/en/function.htmlspecialchars.php)
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? :-)
$string = str_replace("á","a",$string);
$string = str_replace("à","a",$string);
enz...?
Toevoeging op 04/12/2010 19:24:51:
Het is niet fraai geworden, maar het werkt wel: alle diakritische tekens worden omgezet naar hun 'normale' evenknie. Voor wie het kan gebruiken:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?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;}
?>
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;}
?>