Why don't you use to different separators ??
10.0.0.1:crowley|192.168.1.100:lavey
instead of
10.0.0.1|crowley|192.168.1.100|lavey
Then you would just have to use explode...
$string = "10.0.0.1:crowley|192.168.1.100:lavey";
$ips_arr = explode("|", $string);
for($i = 0; $i < count($ips_arr); $i++) {
$ips_arr[$i] = explode(":", $ips_arr[$i]);
}
This would give :
$ips_array = array(
0 => array ( 0 => "10.0.0.1", 1 => "crowley" ),
1 => array( 0 => "192.168.1.100", 1 => "lavey")
)