سؤال

this is array i have

 Array
    (

        [0] =>                  string@:abc:-------:abc
        [1] =>                  string@:abc:xyz-----:abc
        [2] =>               string1:string2:abc:xyz-----:abc                               
        [3] =>               string2:string3:abc:xyz-----:abc            
     )

i want to split these offset like this

Array
(
    [0] => Array
        (
            [1st] =>                  String@
            [2nd] => abc
            [3rd] => ------
            [4th] => abc
        )

   [1] => Array
        (
            [1st] =>                  String@
            [2nd] => abc
            [3rd] => xyz
            [4th] => abc
        )

    [2] => Array
        (
            [1st] =>                  String1
            [2nd] => string2
            [3rd] => abc
            [4th] => xyz
            [5th]=> abc
        )

    [3] => Array
        (
            [1st] =>                  String2
            [2nd] => string3
            [3rd] => abc
            [4th] => xyz
            [5th]=> abc
        )

)

my problem is in 2,3 array string1 and string2 are coming in diff offset i want like this

[0] => Array
        (
            [1st] =>     String1:string2
            [2rd] => abc
            [3th] => xyz
            [4th]=> abc
        )
  [1] => Array
        (
            [1st] =>     String2:string3
            [2rd] => abc
            [3th] => xyz
            [4th]=> abc
        )

but there is only two special char @ nd : if in string1 @ is not there i want to split from start ,if @ is not there i want to start after string2 please help

هل كانت مفيدة؟

المحلول

You can probably use this negative lookbehind:

$arr = preg_split('/(?<!(?:string1|string2)):/', 'string1:string2:abc:xyz-----:abc');
var_dump($arr);

OUTPUT:

array(4) {
  [0]=>
  string(15) "string1:string2"
  [1]=>
  string(3) "abc"
  [2]=>
  string(8) "xyz-----"
  [3]=>
  string(3) "abc"
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top