login  Naam:   Wachtwoord: 
Registreer je!
 Forum

meerdere tekens zoeken in string

Offline b4nkr0bz0r - 18/09/2005 14:55
Avatar van b4nkr0bz0rPHP gevorderde Mijn probleem is dat ik wil kijken of er een bepaalde teken in een string zit. Nou is dat niet zo moeilijk met strpos, Maar ik wil ook kijken of er meerdere achterelkaar staan. Ik zie je nu al denken 'dan gebruik je toch gewoon meerdere keren strpos();'. Mja maar is er niet iets anders? een voorbeeld:
  1. <?php
  2. $sMijnString = 'wat vindt jij van het weer???';
  3.  
  4. if (strpos('?', $sMijnString)) // wil nu dat je een integer met 3 terug krijgt.
  5. {
  6. echo 'ja!';
  7. }
  8. ?>


Maar is het mogelijk dat je dan het aantal tekens (in dit geval het vraagteken) terug krijgt?

- b4nkr0bz0r

12 antwoorden

Gesponsorde links
Offline Ontani - 18/09/2005 14:56
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
ik denk eerder je string dan letter voor letter doorlopen een een counter bijhouden die het aantal bijhoudt
Offline b4nkr0bz0r - 18/09/2005 14:58 (laatste wijziging 18/09/2005 14:58)
Avatar van b4nkr0bz0r PHP gevorderde mja maar hoe? zat al met explote te klooien en ik weet wel hoe ik het moet doorlopen, maar snap je idee niet echt.
Offline nemesiskoen - 18/09/2005 14:58 (laatste wijziging 18/09/2005 14:59)
Avatar van nemesiskoen Gouden medaille

PHP expert
  1. <?php
  2. function hoeveelKeerInString($string,$teken) {
  3. $j=0;
  4. for($i=0;$i<strlen($string);$i++) {
  5. if($teken == $string{$i}) {
  6. $j++;
  7. }
  8. }
  9. if($j==0) {
  10. return FALSE;
  11. }
  12. return $j;
  13. }
  14. ?>
Offline Dolfje - 18/09/2005 15:09 (laatste wijziging 18/09/2005 15:24)
Avatar van Dolfje Gouden medailleGouden medailleGouden medaille

PHP ver gevorderde
je zou beter substr_count() gebruiken 


@ButtonMan: ik was eerder 
Offline Button - 18/09/2005 15:09 (laatste wijziging 18/09/2005 15:10)
Avatar van Button PHP ver gevorderde of simpelweg deze=
  1. <?
  2. $teken="?";
  3. $string="ik zet ? een vraa?gteke?n ????";
  4. $aantal=substr_count($string, $teken); //dit dus vooral
  5. echo $aantal;
  6. ?>


edit : lol dolfje 
Offline b4nkr0bz0r - 18/09/2005 15:16
Avatar van b4nkr0bz0r PHP gevorderde had ik ook al in die richting, maar dan wil ik kijken of er 2 of meer achterelkaar staan, nu telt hij gewoon het aantal in die string.
Offline Dolfje - 18/09/2005 15:22 (laatste wijziging 18/09/2005 15:25)
Avatar van Dolfje Gouden medailleGouden medailleGouden medaille

PHP ver gevorderde
  1. <?
  2. for($i=1; $i < 5; $i++)
  3. {
  4. echo $i":".substr_count($string, str_repeat($stringwhatjezoekt, $i) );
  5. }?>


zoiets, dan krijg je bv. het volgende:
1: 5
2: 2
3: 0
4: 0
5: 0

dan weet je dat het er 5 keer inzit en 2 keren achterelkaar 
Offline b4nkr0bz0r - 18/09/2005 15:45
Avatar van b4nkr0bz0r PHP gevorderde ik zou me doel even uitleggen, mischien dat het nog anders kan:
ik wil als er een tweede teken (vraagteken als voorbeeld) dat de overige tekens (alles na de 1e) zonder spatie verwijderdt wordt zeg maar:
?? => ?.
?????? => ?.
?? ??? => ?. ?.

duidelijk?

(dolfje ik denk dus dat jouw techniet bij mijne ooit zou kunnen werken).
Offline nemesiskoen - 18/09/2005 16:02
Avatar van nemesiskoen Gouden medaille

PHP expert
  1. <?php
  2. function deleteDubbel($string,$teken) {
  3. $z = 0;
  4. for($i=0;$i<strlen($string);$i++) {
  5. if($string{$i} == $teken) {
  6. if($string{$i+1} == $teken) {
  7. for($j=$i;;$j++) {
  8. if($string{$j} != $teken) {
  9. $str2{$z} = $string{$i};
  10. $z++;
  11. break;
  12. }
  13. }
  14. }
  15. } else {
  16. $str2{$z} = $string{$i};
  17. $z++;
  18. }
  19. }
  20. return $str2;
  21. }
  22. ?>
Offline Dolfje - 18/09/2005 16:15
Avatar van Dolfje Gouden medailleGouden medailleGouden medaille

PHP ver gevorderde
@b4nkr0bz0r: nee, mijn techniek slaat hier op hol 
Offline b4nkr0bz0r - 18/09/2005 16:19 (laatste wijziging 18/09/2005 16:32)
Avatar van b4nkr0bz0r PHP gevorderde @namesiskoen; nice try 

echo deleteDubbel('text?????', '?');
echo '<br />';
echo deleteDubbel('text?????blaat?', '?');

output:
Array
Array

murfy edit: tis nemesiskoen, leer lezen 
Offline nemesiskoen - 18/09/2005 16:53
Avatar van nemesiskoen Gouden medaille

PHP expert
Sinds wanneer kunnen we zelf niet meer debuggen?
^_^
De oplossing was gegeven, alleen was er een klein foutje met het nakijken en met het omzetten van arr naar string.
Door ff var_dump te doen had je dit gezien en het door de simpeler operator "." kunnen oplossen.

Hier is in ieder geval de oplossing:
  1. <?php
  2. function deleteDubbel($string,$teken) {
  3. $z = 0;
  4. for($i=0;$i<strlen($string);$i++) {
  5. if($string{$i} == $teken) {
  6. if($string{$i+1} == $teken) {
  7. for($j=$i;;$j++) {
  8. if($string{$j} != $teken) {
  9. if($str2{$z-1} == $teken) {
  10. break;
  11. }
  12. $str2 .= $string{$i};
  13. $z++;
  14. break;
  15. }
  16. }
  17. }
  18. } else {
  19. $str2 .= $string{$i};
  20. $z++;
  21. }
  22. }
  23. return $str2;
  24. }
  25. var_dump(deleteDubbel("??blaat??????", "?"));
  26. ?>

En idd murfy, het is nemesiskoen.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.379s