Das sind nicht "die pipes", das sind die ausdrucksanfangs- und endzeichen. Was das für zeichen sind, ist egal. =,/,|,a,b,c... das zeichen darf dann nur inenrhalb des regex nicht mehr vorkommen.
Meine version:
Code:
<pre>
<?php
$tests = array('status:up@ppX','status:waiting@ppX','status:down');
foreach ($tests as $test)
{
preg_match('=^(status):((.*?)@(.+)|down)$=',$test,$matches);
print_r($matches);
print "\n";
}
?>
</pre>
Ergebnis:
Code:
Array
(
[0] => status:up@ppX
[1] => status
[2] => up@ppX
[3] => up
[4] => ppX
)
Array
(
[0] => status:waiting@ppX
[1] => status
[2] => waiting@ppX
[3] => waiting
[4] => ppX
)
Array
(
[0] => status:down
[1] => status
[2] => down
)
Allerdings müssste mans noch schaffen, den status (waiting/up/down) in den selben index zu schieben.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1