Get specific values from a string of php

Sticking to substr() and strpos() you can do the following as long as you can trust the format of the data.

$s = 'Ab2cds value=284t810 shfn4wksn value=39h1047 hs2krj8dne value=3700p134';
echo "Input string: $s<br>\n";

$out = '';
$offset = 0;
while ( $offset = strpos($s,'=',$offset) )
{
  $end = strpos($s,' ',$offset);
  if ( $end )
    $out .= substr($s,$offset+1,$end-$offset);
  else
    $out .= substr($s,$offset+1);

  $offset++;
}

echo "Output string: $out<br>\n";

This will yield the following:

Input string: Ab2cds value=284t810 shfn4wksn value=39h1047 hs2krj8dne value=3700p134
Output string: 284t810 39h1047 3700p134

I'm guessing that perhaps you wanted to use a strpos() based solution for efficiency purposes.


Do it via regular expression

$str = 'b2cds value=284t810 shfn4wksn value=39h1047 hs2krj8dne value=3700p134';

preg_match_all("/value=([^\s]+)/", $str, $matches);

echo implode(" ", $matches[1]);

Here you can see demo


use this code: with this code you get any strings that they are after value=. I think this is the easiest solution.

$str = 'b2cds value=284t810 shfn4wksn value=39h1047 hs2krj8dne value=3700p134';
preg_match_all('#value=([^\s]+)#', $str, $matches);

echo implode(' ', $matches[1]);

@Kesh : \s means space. [^\s] means everything except space. and + means at least one char. and the () around it is for selecting the string so we can use it after the operation. ([^\s]+) means select everything except space and put them to the $matches


You could use a lookahead to find all value= and take all characters after that until a space character is encountered then implode the results using a space.

$string = 'Ab2cds value=284t810 shfn4wksn value=39h1047 hs2krj8dne value=3700p134';

preg_match_all("/(?=value\=([^\s]+))/", $string, $matches);

$result = implode(" ", $matches[1]);

The output is

284t810 39h1047 3700p134

Tags:

Php