PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : (Dringend) PHP: möchte nach einem Textfragment in einer Variable suchen, aber wie??


MGeee
2005-02-07, 13:37:27
Hi,

ich habe eine Variable mit dem Inhalt "10.0.0.10:33433"
Der Inhalt könnte aber auch "192.168.2.2:54354" sein.

Nun möchte ich in einer IF-Schleife alle Variablen, deren Inhalt mit "10.0.0." anfängt, herausfiltern.

Wie prüfe ich in einer Variable, ob ein Teil deren Inhalts z.B. "10.0.0." enthält?

vielen Dank im voraus!!

firewars
2005-02-07, 14:03:29
Hi,

ich habe eine Variable mit dem Inhalt "10.0.0.10:33433"
Der Inhalt könnte aber auch "192.168.2.2:54354" sein.

Nun möchte ich in einer IF-Schleife alle Variablen, deren Inhalt mit "10.0.0." anfängt, herausfiltern.

Wie prüfe ich in einer Variable, ob ein Teil deren Inhalts z.B. "10.0.0." enthält?

vielen Dank im voraus!!Erstmal gibt es keine If-Schleifen :)
Aber davon abgesehen hast du mehrere Möglichkeiten, das Ganze anzugehen, die sich jeweils in ihrer Effizienz unterscheiden.

Theoretisch ginge gar etwas à la
if(eregi('10.0.0.',$string)){...}aber strotzt soetwas nur so vor Overkill-Dasein.

Am besten ist dir allerdings meiner Meinung nach mit der Funktion substr(string $string, int $start [, int $length]) (http://de.php.net/manual/de/function.substr.php) geholfen - guck's dir mal an.

MGeee
2005-02-07, 14:16:10
Erstmal gibt es keine If-Schleifen :)
Aber davon abgesehen hast du mehrere Möglichkeiten, das Ganze anzugehen, die sich jeweils in ihrer Effizienz unterscheiden.

Theoretisch ginge gar etwas à la
if(eregi('10.0.0.',$string)){...}aber strotzt soetwas nur so vor Overkill-Dasein.

Am besten ist dir allerdings meiner Meinung nach mit der Funktion substr(string $string, int $start [, int $length]) (http://de.php.net/manual/de/function.substr.php) geholfen - guck's dir mal an.

Danke, ich probiers mal aus. Wichtig wäre mir, dass die Routine nicht viel Rechenzeit beansprucht, da ich eine ca. 150 Mbyte große ASCII-Datei schnellstmöglich bearbeiten will..

MGeee
2005-02-07, 17:17:47
noch eine Frage:
ich teile eine Ganzzahl durch 1024 und möchte die Nachkommastellen abrunden.
Bsp: 12234327 / 1024

Mit welchem Code kann ich das unter PHP machen?

Danke nochmal :)

JTHawK
2005-02-07, 17:48:53
selfphp.info

round($string,kommastellen)
kommastellen = irgend eine zahl

Captain America
2005-02-11, 06:04:15
Erstmal gibt es keine If-Schleifen :)

Theoretisch ginge gar etwas à la
if(eregi('10.0.0.',$string)){...}aber strotzt soetwas nur so vor Overkill-Dasein.


Der Code eregi('10.0.0.',$string) liefert potentiell falsche Ergebnisse, er würde zum eine auch "123.10.0.0.schlagmichtot" finden, zum anderen ist der Punkt '.' ein Sonderzeichen in Regex.

Richtig ist:


eregi("^10\\.0\\.0\\.", $string)

firewars
2005-02-12, 20:36:45
Das mit dem Punkt war mir nicht bewusst, da ich ereg[i](...) nie benutze. Davon abgesehen ging ich davon aus, dass soetwas wie *.schlagmichtot nicht der Fall ist. Aber gut, optimal ist die Funktion hier so oder so nicht.

Kinman
2005-02-14, 02:21:15
am besten hier ein bisschen nachschaun:
http://www.php.net/manual/de/ --> stringfunktionen

Blar
2005-02-17, 01:29:26
Die Lösung ist


if(substr($string, 0, 7) == '10.0.0.') { /* Code */ }


selfphp.info

round($string,kommastellen)
kommastellen = irgend eine zahl



Abgerundet wird mir floor();


Theoretisch ginge gar etwas à la
if(eregi('10.0.0.',$string)){...}
aber strotzt soetwas nur so vor Overkill-Dasein.


Erstmal benutzt man keine ereg* Funktionen mehr, weil preg* viel schneller sind und eregi() ist die case insensitive Version von ereg() - was bei Zahlen ja total sinnlos ist.

The_Invisible
2005-02-17, 07:34:53
if(preg_match("/^10\\.0\\.0\\.([0-9]{1,3})/",$string,$patterns)) {
// $patterns[0] enthält nun die ganze IP Adresse und kann weiterverarbeitet werden, wobei bei ner großen Datei sicher preg_match_all() sinnvoll wäre
}


mfg

JTHawK
2005-02-17, 12:40:56
Abgerundet wird mir floor();

aber eben nur "abgerundet"

5.7 wird zu 5
5.1 wind zu 5
-3.5 wird zu -4

wenn das hilft .. bitteschön ..

MGeee
2005-02-19, 12:28:55
aber eben nur "abgerundet"

5.7 wird zu 5
5.1 wind zu 5
-3.5 wird zu -4

wenn das hilft .. bitteschön ..

also ich möchte auf 2 Stellen hinter dem Komma runden, z.B. aus 5.75483248234723948 soll dann 5.75 werden. Oder kann man alles was hinter den 5.75 kommt irgendwie einfach abschneiden?