0

Is there any easy way other to find the number of occurance of a string and explode it in to any array.

I know this can be done using fixed lingth of string and explode that in to an array. But the string which i am handling are valiable length.

Ex: My String # 12 # # # Hello World

What I am trying to achieve

Step 1: # 12 # # # Split the string after 5 space occurance inside the given string.

Then I can explode each string in to an array.

Array ( [0] => # [1] => 12 [2] => # [3] => # [4] => # [5] => )

And get the left out string in a seperate string/array Hello World

I couldnt able to work with step 1 as it is vairable length each time. In some occurance it is like the follwoing # # # # # Any help much appreciated.

DonOfDen
  • 3,968
  • 11
  • 62
  • 112
  • Is it always five spaces? – Andreas Jul 03 '17 at 12:24
  • is the explode delimiter is always `# ` (with a space)? and is the phrase you want to extract always at the end? If so, you can use `$expl = explode('# ', $array);` and your phrase will be `$expl[count($expl) - 1]`. places with only `# ` without value will be in the array as empty. – Kaddath Jul 03 '17 at 12:31

1 Answers1

0

Didn't get an answer on my comment so I assume it's always five spaces that is needed.

https://3v4l.org/E9XUG

Explode on space and slice array on five items.
Rebuild string with implode and space.

$str = "# 12 # # # Hello World";

$arr = explode(" ", $str);

$newarr = array_slice($arr, 0,5);

$new = implode(" ", $newarr);
Echo $new;

I see now that I may have missread.
Is Hello world the expected output?

In that case change to:.

$str = "# 12 # # # Hello World";

$arr = explode(" ", $str);

$newarr = array_slice($arr, 5);

$new = implode(" ", $newarr);
Echo $new;

https://3v4l.org/FUmCs

Edit; since there is no regex involved in this solution, it's also quicker.
The code can be "bunched" up to a one liner if needed but for clarity I made new variables on each step.

Andreas
  • 23,610
  • 6
  • 30
  • 62