brauche mal hilfe...(strpos)
selfer
- php
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
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
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..
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
Hi Cheatah,
danke dir! schönen abend noch :)
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
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.