Regex Frage

02/15/2016 17:03 Don'yoku#1
Hi, ich will aus einer Datei zeug auslesen.

Diese enthält mehrere gleich aufgebauter Blöcke (Telefonanlagen Durchwahlplan)
ca so:

Ich benötige daraus das in [], das was nach callerid= bis vor < kommt, sowie das was in den <> ist und das nach secred=.

Ausgelesen bekomm ichs soweit, kein problem.

Ich bekomme nur den String in PHP nicht gestript.
Sprich ich bekomme aus dem:

callerid=Testaccount <0>

nicht die 0 alleine raus.

Gibt es irgend einen weg wie ich PHP sagen kann, hey ich hätte gerne alles zwischen den < > in nen eigenen String gespeichert?

Sobald ich das ca habe kann ich es ja eigentlich auf alles anwenden sprich einfach die grenzen ändern, oder nicht?
Achja das zwischen den < > ist in der länge variabel sprich ich kann nicht sagen es is genau 1/2/3/4 etc zeichen lang.
Wo häng ich xD
02/15/2016 17:15 ~ JWonderpig ~#2
Meinst du etwas in diese Richtung in Verbindung mit [Only registered and activated users can see links. Click Here To Register...]?

PHP Code:
<(.*?)\> 
02/15/2016 18:19 PixelTree#3
Quote:
Originally Posted by luci12 View Post
Achja das zwischen den < > ist in der länge variabel sprich ich kann nicht sagen es is genau 1/2/3/4 etc zeichen lang.
Doch, kannst du: mit strpos()
[Only registered and activated users can see links. Click Here To Register...]

alternativer regex:
PHP Code:
$re "/callerid=(.+)\\s<(\\d+)>/"
$str "[666]\ntype=friend\nsecret=lolgeheim\nqualify=yes\nnat=no\nhost=dynamic\ncanreinvite=no\ncontext=sipphones\nmailbox=30@default\ncallerid=Testaccount <0>\nhasvoicemail=yes\nsubscribecontext=SIP-in\ncall-limit=10\ncallgroup=1\npickupgroup=1\n\n[777]\ntype=friend\nsecret=lolgeheim2\nqualify=yes\nnat=no\nhost=dynamic\ncanreinvite=no\ncontext=sipphones\nmailbox=30@default\ncallerid=Testaccount2 <123>\nhasvoicemail=yes\nsubscribecontext=SIP-in\ncall-limit=10\ncallgroup=1\npickupgroup=1"
 
preg_match_all($re$str$matches); 
02/16/2016 10:06 Don'yoku#4
Okay habs gelöst hatte es mit preg_match gemacht aber keine result variable angegeben, dies nun getan und alles geht so wie ichs will.

PHP Code:
preg_match("/(?<=callerid=)(.+?)(?=<)/"$data[$i], $name