selfer: brauche mal hilfe...(strpos)

Hallo,

ich habe mal versucht mir was zusammen zu basteln und kommentiere es mal so wie ich es mir denke aber es trotzdem nicht funktioniert:

  
$string="www.foo.de";  
//$c beim ersten aufruf = 0 damit bein index 0 angefangen wird zu suchen  
$c=0;  
//While läuft solange bis strpos false liefert  
while($n=strpos($string,".",$c)!=false)  
 {  
   //$n speichert die letzte position des gefundenen 'needle >.<'  
   //dieser wert aus $n wird an $c übergeben damit strpos immer  
   //nach 1.2.3.4 usw. dem gefundenen wert weitersucht.  
  
   $c=$n;  
  
 }  
  

aber irgendwie hau ich mir ne endlosschleife rein, an was habe ich nicht gedacht?

danke

  1. Hi,

    while($n=strpos($string,".",$c)!=false)

    hier weist Du $n zu, ob das Ergebnis von strpos() ungleich false ist ...

    $c=$n;

    ... und hier setzt Du die Variable $c, die augenscheinlich als Index dienen soll, auf oben ermittelten Boole'schen Wert.

    aber irgendwie hau ich mir ne endlosschleife rein, an was habe ich nicht gedacht?

    Du hast nicht daran gedacht, dass PHP eine wahnwitzig lasche Programmiersprache ist, die in typischer Microsoft-Manier trotz grober Fehler einfach weitermacht. Der dritte Parameter von strpos() darf nicht Boole'sch sein, es wird ein Integer erwartet.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi Cheatah,

      [lang code=php]
      $string="www.foo.de";
      $c=strpos($string,".",0);
      [/code]

      liefert doch 3 zurück.. nu is ganz vorbei... wo kommt denn dann
      in einer while schleife der boole´sche wert her?
      ..oh oh, ich glaube ich muss noch was lernen..

      1. Hi,

        $c=strpos($string,".",0);
        liefert doch 3 zurück..

        ja, das ist richtig.

        nu is ganz vorbei... wo kommt denn dann
        in einer while schleife der boole´sche wert her?

        Von hier:

        strpos($string,".",$c)!=false

        Dieser Vergleich liefert entweder true oder false. Du weist diesen Wert der Variable $n zu, die anschließend in $c aufgeht.

        ..oh oh, ich glaube ich muss noch was lernen..

        Operator-Rangfolge :-)

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hi Cheatah,

          danke dir! schönen abend noch :)

    2. Hello,

      while($n=strpos($string,".",$c)!=false)

      Außerdem ist die Abfrage falsch.
      Der Vergleichsoperator ist falsch gewählt.
      Du musst, um Treffer zu identifizieren, mittels Identitätsoperator abfragen

      strpos() !== false

      Anderenfalls würde die Position 0 ebenfalls als FALSE ausgewertet werden.

      Harzliche Grüße vom Berg
      http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau

  2. Tach.

    $string="www.foo.de";

    //$c beim ersten aufruf = 0 damit bein index 0 angefangen wird zu suchen
    $c=0;
    //While läuft solange bis strpos false liefert
    while($n=strpos($string,".",$c)!=false)
    {
       //$n speichert die letzte position des gefundenen 'needle >.<'
       //dieser wert aus $n wird an $c übergeben damit strpos immer
       //nach 1.2.3.4 usw. dem gefundenen wert weitersucht.

    $c=$n;

    }

      
    Falls du das letzte Vorkommen eines Zeichens herausbekommen möchtest, kannst du [strrpos()](http://de3.php.net/manual/de/function.strrpos.php) benutzen.  
    
    -- 
    Once is a mistake, twice is jazz.
    
    1. Hi,

      danke!