Finding values in a string

Hi Experts,

I have some data in a string, I want to find a certain character and then display information after that character and before the next comma e.g.

The string:-
MC=84895FE1;MS=0;SD=288362944;GSID=5550;GT=-1;PC=0;RU=3 100 10000 0 1 10 0 1 0 -1 0 -1 -1 1 ;S=HlIlIIIllIllIIIlI,4FE4F347,0,TT,-1,3,-1,-1,0,1,-1,:HE.LeOwNzAll,5464935A,0,TT,0,8,-1,-1,0,1,-1,E.:HMindstate,3EC23EBF,8088,

I want to return the values after this marker ':H' e.g. 'E.LeOwNzAll' and Mindstate.

I do not want to return the string position as these values can change based on the length of a name.

Thanks in advance
Who is Participating?
Roger BaklundConnect With a Mentor Commented:
Your string is stored in $data. Then call the function like this:

$found = FindData($data);

$found now contains an array with the found items. You can loop over them with a standard foreach:
echo count($found).' items found<br />';
echo '<ul>';
foreach($found as $item)
  echo '<li>'.$item.'</li>';
echo '</ul>';

Open in new window

Roger BaklundCommented:
Try this:
function FindData($data,$start=':H',$end=',') {
  $res = array();
  $pos = strpos($data,$start);
  while($pos!==false) {
    $data = substr($data,$pos+strlen($start));
    $pos = strpos($data,$start);
  return $res;

Open in new window

EzEApostleAuthor Commented:
Thanks cxr, how would I go about using this function with the string I have? Kind of beginner.intermediate with PHP :)
Use the code below. Assume $data = fullstring
The result will be in $matches[1][*]

You can use foreach($matches[1] as $match)
preg_match_all('|:H([^,]+)|', $data, $matches);

Open in new window

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.