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