Ik ben op zoek naar een methode om te kijken of bepaalde karakters in een string voorkomen. Ik wil alleen weten of een van de karakters die ik heb opgegeven in de tekst voorkomt. Ik hoef dus niet de lokatie, aantal x etc te weten.
Dus een boolean als een string bijvoorbeeld een @ of & of * of alledrie bevat.
Niet getest, ik denk zoiets:
Code (php)
1
2
3
4
5
6
7
<?php
$string = 'bla @ bla';
$find = strpos($string, array('@', '&', '*'));
if ($find !== false) {
exit('verboden teken gevonden!');
}
?>
Gewijzigd op 03/10/2012 13:11:02 door
Ozzie PHPik betwijfel of strpos wel een array accepteerd.
Gebruik deze functie:
http://www.php.net/manual/en/function.strpbrk.phpInderdaad, strpos kan geen array aan.
strpbrk lijkt wel te werken:
Code (php)
1
2
3
4
5
6
7
8
9
<?php
$string = 'Er zit een @ in deze tekst! Maar ook een & en een *...';
$tmp = strpbrk($string, '*&@');
if ($tmp !== FALSE) {
echo 'true';
}else{
echo 'false';
}
?>
Gewijzigd op 03/10/2012 14:17:37 door
Sander ZBlijf ik liever bij die van mij, die is korter simpeler en iets sneller.
Als ik met jouw methode op zoek ga naar bv 20 karakters en de 1e wordt al gevonden dan draait jouw loop daarna alsnog 19x voor alle andere items. Hij voert welliswaar niets uit, maar checked wel.
Dan zou je eerder de volgende methode moeten gebruiken:
Code (php)
1
2
3
4
for ($i = 0; $i < count($tekens) ; $i++)
// En als er dan resultaat gevonden is:
$i=999;
Als er dan resultaat gevonden wordt, maak je $i gelijk aan een hogere waarde waardoor de for loop geen nieuwe loop meer start. Wordt dan bij de 1e loop al iets gevonden, dan gaat hij niet nogmaals 19x een loop draaien zonder iets uit te voeren.
Euh... daar hebben we de functie
break voor... ;-)
Code (php)
1
2
$tmp = (strpbrk($string, '*&@') === false);
echo $tmp;
Gewijzigd op 04/10/2012 10:15:22 door
@ozzie, break kan idd ook.
@stef Kijk lekker kort! Dank je!