String aus String extrahieren

String aus String extrahieren

am 20.08.2006 13:22:29 von Florian Gusinde

Hallo Gruppe,

ich stehe auf dem Schlauch und bitte um Hilfe.

Aus einem vorgegebenen String (smbstatus) soll die IP-Adresse
ausgelesen werden.

Übergeben wird (z.B.) folgender Text:

asdsa asd asd asdmalskdmskdmasld (192.168.1.20) dasdnajkn asd dasdasd
dasd sad

Sichergestellt ist, dass sich in den Klammern die IP befindet und dass
das Klammerpärchen nur dieses eine Mal vorkommt.
Mit preg_match etc. bekomme ich es einfach nicht hin - wer kann
helfen?

Viele Grüße, Flo


--
OpenSuSE 10.1
KNode 0.10.1

Re: String aus String extrahieren

am 20.08.2006 13:48:54 von Carsten Wiedmann

Florian Gusinde schrieb:

> Aus einem vorgegebenen String (smbstatus) soll die IP-Adresse
> ausgelesen werden.
>
> Übergeben wird (z.B.) folgender Text:
> asdsa asd asd asdmalskdmskdmasld (192.168.1.20) dasdnajkn asd dasdasd
> dasd sad
>
> Sichergestellt ist, dass sich in den Klammern die IP befindet und dass
> das Klammerpärchen nur dieses eine Mal vorkommt.

z.B.:
| | $smbstatus = 'asdsa asd asd asdmalskdmskdmasld (192.168.1.20) dasdnajkn';
| preg_match('|\((\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\)|',
| $smbstatus, $matches);
| print_r($matches);
| ?>

Gruß
Carsten

Re: String aus String extrahieren

am 20.08.2006 13:57:02 von dev-null-use-reply-adress

Florian Gusinde schrieb:
> ich stehe auf dem Schlauch und bitte um Hilfe.

Ich habe erstmal das Wasser abgestellt.

> Aus einem vorgegebenen String (smbstatus) soll die IP-Adresse
> ausgelesen werden.

> asdsa asd asd asdmalskdmskdmasld (192.168.1.20) dasdnajkn asd dasdasd
> dasd sad
>
> Sichergestellt ist, dass sich in den Klammern die IP befindet und dass
> das Klammerpärchen nur dieses eine Mal vorkommt.

preg_match(
'#\((\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\)#',
$smbstatus,
$matches
);
$ip = $matches[1];


Gruß
JPM

Re: String aus String extrahieren

am 20.08.2006 14:10:12 von Florian Gusinde

Jens Peter Möller schrieb am Sonntag, 20. August 2006 13:57:

> Ich habe erstmal das Wasser abgestellt.

Danke :-)

>> asdsa asd asd asdmalskdmskdmasld (192.168.1.20) dasdnajkn asd
>> dasdasd dasd sad
>>
>> Sichergestellt ist, dass sich in den Klammern die IP befindet und
>> dass das Klammerpärchen nur dieses eine Mal vorkommt.
>
> preg_match(
> '#\((\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\)#',
> $smbstatus,
> $matches
> );
> $ip = $matches[1];

Ergibt genau mein Problem - die Ausgabe steht in Klammern "()". Ich
benötige aber "nur" die IP - any hints?

Grüße, Florian


--
OpenSuSE 10.1
KNode 0.10.1

Re: String aus String extrahieren

am 20.08.2006 14:25:14 von Ulf Kadner

Florian Gusinde wrote:
> ich stehe auf dem Schlauch und bitte um Hilfe.

Mach doch einfach mal nen Schritt! ;-)

> asdsa asd asd asdmalskdmskdmasld (192.168.1.20) dasdnajkn asd dasdasd
> dasd sad
>
> Sichergestellt ist, dass sich in den Klammern die IP befindet und dass
> das Klammerpärchen nur dieses eine Mal vorkommt.
> Mit preg_match etc. bekomme ich es einfach nicht hin - wer kann
> helfen?

Stringfunktionen kannst Du dafuer mehrere verschiedene nutzen.

Dabei must Du, da Performance immer wichtig ist, wissen ob es Sinn macht
wegen Deines Suche erst die Regexengine initialisiert werden soll.

Wenn also sowieso oft auf Regex im Script zugegriffen werden soll kann
Du hier regexe nutzen. Ansonsten sind normale Stringfunktionen
wesentlich schneller.

schnellste Möglichkeit mit Stringfunktionen:

$openPOS = strpos($str,'(');
echo substr($str, $openPOS+1, strpos($str,')')-$openPOS-1);

Nur gering langsamer:

$str = strstr($str,'(');
echo substr($str, 1, strpos($str,')')-1);

Beide Methoden sind um einiges performanter wie regex solange die
Regexengine nicht initialisiert ist.

Wenn die Engine bereits genutzt wurde ist natuerlich der Regex schneller.

Naja und regex wurde Dir ja bereits erklärt

MfG, Ulf

Re: String aus String extrahieren

am 20.08.2006 14:29:27 von Ulf Kadner

Florian Gusinde wrote:

> Jens Peter Möller schrieb
>> '#\((\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\)#',
>
> Ergibt genau mein Problem - die Ausgabe steht in Klammern "()". Ich
> benötige aber "nur" die IP - any hints?

Ist es denn zuviel verlangt mal die beiden escapten Klammern aus dem
Ausdruck zu entfernen? Echt mal!

Grundwissen zu Regexen must Du Dir schon selbst beibringen!

MfG, Ulf

Re: String aus String extrahieren

am 20.08.2006 14:31:02 von Florian Gusinde

Ulf Kadner schrieb am Sonntag, 20. August 2006 14:25:

Moin,

> $openPOS = strpos($str,'(');
> echo substr($str, $openPOS+1, strpos($str,')')-$openPOS-1);

das läuft, super. Geschwindigkeit ist hier nicht entscheidend, die
Funktion wird äusserst selten benutzt.

Danke!

Grüße, Flo


--
OpenSuSE 10.1
KNode 0.10.1

Re: String aus String extrahieren

am 20.08.2006 14:39:39 von Florian Gusinde

Ulf Kadner schrieb am Sonntag, 20. August 2006 14:29:

> Florian Gusinde wrote:
>
>> Jens Peter Möller schrieb
>>> '#\((\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\)#',
>>
>> Ergibt genau mein Problem - die Ausgabe steht in Klammern "()". Ich
>> benötige aber "nur" die IP - any hints?
>
> Ist es denn zuviel verlangt mal die beiden escapten Klammern aus dem
> Ausdruck zu entfernen? Echt mal!

Sorry - genau das war ja mein Schlauch. Den Wald vor lauter Bäumen
nicht mehr gesehen...

> MfG, Ulf

Danke!

Flo


--
OpenSuSE 10.1
KNode 0.10.1

Re: String aus String extrahieren

am 20.08.2006 15:07:37 von dev-null-use-reply-adress

Florian Gusinde schrieb:
> Jens Peter Möller schrieb am Sonntag, 20. August 2006 13:57:

>>> asdsa asd asd asdmalskdmskdmasld (192.168.1.20) dasdnajkn asd
>>> dasdasd dasd sad
>>>
>>> Sichergestellt ist, dass sich in den Klammern die IP befindet und
>>> dass das Klammerpärchen nur dieses eine Mal vorkommt.
>> preg_match(
>> '#\((\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\)#',
>> $smbstatus,
>> $matches
>> );
>> $ip = $matches[1];
>
> Ergibt genau mein Problem - die Ausgabe steht in Klammern "()".

Defintiv nicht.

> Ich benötige aber "nur" die IP - any hints?

Keine Vermutungen anstellen, sondern mein Vorschlag ausprobieren.


Gruß
JPM

Re: String aus String extrahieren

am 20.08.2006 21:01:14 von Stefan Scholl

Florian Gusinde wrote:
> Mit preg_match etc. bekomme ich es einfach nicht hin - wer kann
> helfen?

Anleitungen und Tutorials zu Regulären Ausdrücken lesen. Ggf. ein
Buch kaufen. Im Regex Coach
ausprobieren.


--
Web (en): http://www.no-spoon.de/ -*- Web (de): http://www.frell.de/

Re: String aus String extrahieren

am 20.08.2006 21:26:00 von Sebastian Wessel

Florian Gusinde schrieb:
> Geschwindigkeit ist hier nicht entscheidend, die
> Funktion wird äusserst selten benutzt.

.... und wenn sie in 1 oder 2 Jahren doch mal häufiger benutzt werden
sollte ziehen wir einfach auf einen leistungsfähigeren Server um, das
ist ja schließlich einfacher als die Programmierweise auch mal auf
Geschwindigkeit auszurichten.


--
MfG Sebastian Wessel

"Wer Dich wegen deines Hemdes verprügelt ist nicht dein Freund."
(March Simpson)

Re: String aus String extrahieren

am 20.08.2006 21:41:46 von Stefan Scholl

Sebastian Wessel wrote:
> Florian Gusinde schrieb:
>> Geschwindigkeit ist hier nicht entscheidend, die
>> Funktion wird äusserst selten benutzt.
>
> ... und wenn sie in 1 oder 2 Jahren doch mal häufiger benutzt werden
> sollte ziehen wir einfach auf einen leistungsfähigeren Server um, das
> ist ja schließlich einfacher als die Programmierweise auch mal auf
> Geschwindigkeit auszurichten.

Wenn Du auf die paar Millisekunden so scharf bist (ohne durch
Profiling zu testen ob es nötig ist), warum benutzt Du dann
überhaupt PHP?


--
Web (en): http://www.no-spoon.de/ -*- Web (de): http://www.frell.de/

Re: String aus String extrahieren

am 20.08.2006 22:26:17 von Sebastian Wessel

Stefan Scholl schrieb:
> Sebastian Wessel wrote:
>> Florian Gusinde schrieb:
>>> Geschwindigkeit ist hier nicht entscheidend, die
>>> Funktion wird äusserst selten benutzt.
>> ... und wenn sie in 1 oder 2 Jahren doch mal häufiger benutzt werden
>> sollte ziehen wir einfach auf einen leistungsfähigeren Server um, das
>> ist ja schließlich einfacher als die Programmierweise auch mal auf
>> Geschwindigkeit auszurichten.
>
> Wenn Du auf die paar Millisekunden so scharf bist (ohne durch
> Profiling zu testen ob es nötig ist), warum benutzt Du dann
> überhaupt PHP?

Weil es manchmal einfach komfortabel ist.

Aber nur weil ich sowieso schon in einem Trabbi sitze muss ich nicht
auch noch die Handbremse anziehen. :)



--
MfG Sebastian Wessel

"Wer Dich wegen deines Hemdes verprügelt ist nicht dein Freund."
(March Simpson)

Re: String aus String extrahieren

am 21.08.2006 01:01:31 von Ulf Kadner

Stefan Scholl wrote:
> Sebastian Wessel wrote:
>>... und wenn sie in 1 oder 2 Jahren doch mal häufiger benutzt werden
>>sollte ziehen wir einfach auf einen leistungsfähigeren Server um, das
>>ist ja schließlich einfacher als die Programmierweise auch mal auf
>>Geschwindigkeit auszurichten.
>
> Wenn Du auf die paar Millisekunden so scharf bist (ohne durch
> Profiling zu testen ob es nötig ist), warum benutzt Du dann
> überhaupt PHP?

Hallo!

Es geht doch im Endeffekt nicht darum ob man bestimmte Sprachen benutzt.
Optimierung gilt Sprachübergreifend und ist in jeder mir bekannten
Sprache auch sinnvoll.

Die möglichkeit zur Wahl dessen was man programmiert hat mal wohl nur
als Hobbyprogrammierer. Ansonsten ist immer der Kunde der
Entscheidungsträger. Den kann man zwar beeinflussen aber auch nur im
sinnvollen und natürlich akzeptierten Rahmen.

Spätestens wenn mal mal Anwendungen programmiert hat die etwas
umfangreicher sind (was weis ich, z.B.: ein CMS) zählt auch jede
Millisekunde ja! Da summiert sich auch kleines meist ganz gut.

Du verstehst?

MfG, Ulf