string matchen op 3 verschillende manieren
Ik begon met de simpele opdracht: kijken of er een woord voorkwam in een string. Zo ja, doe iets.
Zo niet, kijk of er een ander woord voorkomt in dezelfde string. Zo ja, doe iets.
Zo niet, doe iets anders.
Dit zijn de woorden en de string:
Code (php)
1
2
3
2
3
$string_scout = "scoutte";
$string_aanval = "viel";
$string = $explode_soort_aanval[2][0];
$string_aanval = "viel";
$string = $explode_soort_aanval[2][0];
waarbij de laaste gelijk is aan dit: Stonehedge scoutte B1 Eppie
php.net gaf me 3 mogelijke manieren om dit te doen: preg_match, strpos en ereg.
ik probeer ze alldrie uit:
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
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
$scout = strpos($string_scout, $string);
$aanval = strpos($string_aanval, $string);
echo '<br>';
if($scout === true)
{
echo 'scoutte met strpos';
}
elseif($aanval === true)
{
echo 'aanval met strpos';
}
else
{
echo 'niets met strpos';
}
echo '<br>';
if(ereg($string_scout,$string))
{
echo 'scoutte met ereg';
}
elseif(ereg($string_aanval,$string))
{
echo 'aanval met ereg';
}
else
{
echo 'niets met ereg';
}
echo '<br>';
if(preg_match($string_scout,$string))
{
echo 'scoutte met preg_match';
}
elseif(preg_match($string_aanval,$string))
{
echo 'aanval met preg_match';
}
else
{
echo 'niets met preg_match';
}
echo '<br>';
$aanval = strpos($string_aanval, $string);
echo '<br>';
if($scout === true)
{
echo 'scoutte met strpos';
}
elseif($aanval === true)
{
echo 'aanval met strpos';
}
else
{
echo 'niets met strpos';
}
echo '<br>';
if(ereg($string_scout,$string))
{
echo 'scoutte met ereg';
}
elseif(ereg($string_aanval,$string))
{
echo 'aanval met ereg';
}
else
{
echo 'niets met ereg';
}
echo '<br>';
if(preg_match($string_scout,$string))
{
echo 'scoutte met preg_match';
}
elseif(preg_match($string_aanval,$string))
{
echo 'aanval met preg_match';
}
else
{
echo 'niets met preg_match';
}
echo '<br>';
resultaat:
niets met strpos
scoutte met ereg
niets met preg_match
kortom: preg_match doet niet wat ik wil, strpos ook niet, alleen ereg. Hoe kan dat, en hoe zorg ik dat de andere 2 ook werken?
Alvast bedankt!
Maak daar van:
if($scout !== false)
if(preg_match($string_scout,$string))
Maak daar van:
if(preg_match('/'. $string_scout . '/',$string))
En ereg is antiek.
Niet meer gebruiken.
Gewijzigd op 28/06/2011 07:05:45 door - SanThe -
Dat betekend dat het begint met / en eindigt met /. Dit komt uit talen als bijv. javascript, waar regulair expressions (kortweg regex) geen string zijn maar een speciaal type.
De preg_match wordt dus:
Dat ereg antiek is is ook precies de reden waarom ik hier vroeg hoe het anders kon. Bedankt!
Je controleert nu dus of "Stonehedge scoutte B1 Eppie" voorkomt in "scoutte".