Karakters binnen een string

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sander Z

Sander Z

03/10/2012 13:07:16
Quote Anchor link
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.
 
PHP hulp

PHP hulp

26/04/2024 02:05:00
 
Ozzie PHP

Ozzie PHP

03/10/2012 13:10:31
Quote Anchor link
Niet getest, ik denk zoiets:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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 PHP
 
Flip --

Flip --

03/10/2012 13:16:30
Quote Anchor link
ik betwijfel of strpos wel een array accepteerd.
Gebruik deze functie:
http://www.php.net/manual/en/function.strpbrk.php
 
Sander Z

Sander Z

03/10/2012 14:16:39
Quote Anchor link
Inderdaad, strpos kan geen array aan.
strpbrk lijkt wel te werken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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 Z
 
Albert de Wit

Albert de Wit

03/10/2012 16:48:54
Quote Anchor link
@ of & of *

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
<?php

$tekens
= array('@','&','*');

$i = 0;
foreach ($tekens as $item){
    if ($i==0){
        if (strstr($haystack,$item)){
            echo 'false';
            $i = 1;
        }
    }
}


if ($i==1){
    echo 'true';
}


?>
 
Sander Z

Sander Z

04/10/2012 09:45:10
Quote Anchor link
Blijf 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)
PHP script in nieuw venster Selecteer het PHP script
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.
 
Ozzie PHP

Ozzie PHP

04/10/2012 09:47:53
Quote Anchor link
Euh... daar hebben we de functie break voor... ;-)
 

04/10/2012 10:05:34
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$tmp = (strpbrk($string, '*&@') === false);
echo $tmp;
Gewijzigd op 04/10/2012 10:15:22 door
 
Sander Z

Sander Z

04/10/2012 10:32:40
Quote Anchor link
@ozzie, break kan idd ook.
@stef Kijk lekker kort! Dank je!
 



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.