string matchen op 3 verschillende manieren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Thomas minke

thomas minke

28/06/2011 01:25:24
Quote Anchor link
Goedemorgen,

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$string_scout = "scoutte";
$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)
PHP script in nieuw venster Selecteer het PHP script
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
$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>';

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!
 
PHP hulp

PHP hulp

27/11/2024 23:17:12
 
- SanThe -

- SanThe -

28/06/2011 07:01:54
Quote Anchor link
if($scout === true)
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 -
 
Wouter J

Wouter J

28/06/2011 08:00:35
Quote Anchor link
Ereg moet je niet meer gebruiken, hiervoor in de plaats is preg_match gekomen. Preg match heeft een totaal andere manier van schrijven dan strpos en ereg. Dit is namelijk gebaseerd op de algemene regulair expression syntax.

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
preg_match('/woordDatJeWiltZoeken/', $stringWaarin);
?>
 
Thomas minke

thomas minke

28/06/2011 10:41:32
Quote Anchor link
Dat ereg antiek is is ook precies de reden waarom ik hier vroeg hoe het anders kon. Bedankt!
 
Dos Moonen

Dos Moonen

28/06/2011 11:13:19
Quote Anchor link
Je stopt de variabelen bij strpos() in de verkeerde volgorde in de argumenten lijst.
Je controleert nu dus of "Stonehedge scoutte B1 Eppie" voorkomt in "scoutte".
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.