[php] Regex probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hey,

Ik probeer een makkelijk verboden woorden functie te maken. Hij ziet er als volgt uit:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function verbodenwoorden ($input) {
$select="SELECT inhoud FROM paginas WHERE naam='Verboden woorden'";
$query = @mysql_query($select);
$var   = @mysql_result($query, 0, inhoud);
$var   = str_replace(' ', '', $var);
$var   = eregi_replace("a|e|i|o|y|u", "*", $var);
$var   = explode (";", $var);

foreach ($var AS $key => $val) {
$num   = strlen($val);
while ($i < $num) {$replace .= "*"; $i++;}
echo $val . " hoi " . $replace;
$input = eregi_replace($val, $replace, $input);
}
return $input;
}


de verboden woordenlijst ziet er zo uit: anaal;kanker

Het resultaat van de functie is (onafhankelijk van de input uiteraard):
code:
1
2
3
*n**l hoi *****
Warning: eregi_replace() [function.eregi-replace]: REG_BADRPT in /usr/local/psa/home/vhosts/ookinspanje.nl/httpdocs/account.php on line 14
k*nk*r hoi ******


Hoe is dit mogelijk ? Het hoort toch gewoon te werken ?

Acties:
  • 0 Henk 'm!

  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 09-09 15:24
Waarom gebruik je in regel 13 een eregi_replace en niet een gewone str_replace, volgens mij is dat makkelijker. En de fout zit 'm volgens mij in het feit dat je de *'jes als je eregi replace doet zou moeten escapen

http://nl.php.net/manual/en/function.eregi-replace.php
zegt:
I have found that some characters cannot be used by eregi_replace (or ereg_replace). When you get the REG_BADRPT error, try backslashing any special chars in your pattern string

ex.
$str = eregi_replace("*", "", $somevar)

gives the REG_BADRPT error. Change it to
$str = eregi_replace("\*", "", $somevar)

to make it work

[ Voor 51% gewijzigd door beetle71 op 31-03-2003 21:31 ]


Acties:
  • 0 Henk 'm!

Verwijderd

probeer regel 6 eens zo:

code:
1
$var   = eregi_replace("a|e|i|o|y|u", "\*", $var);


dus met een slash voor het sterretje