Edited my que.. Value also contains some letters
I have search through so many questions but I couldn't find it.
I have string like this:
Ab2cds value=284t810 shfn4wksn value=39h1047 hs2krj8dne value=3700p134
What I want to do is get all values only in output like:
284t810 39h1047 3700p134
I used substr
and strpos
combine to get value but it only removes portion of data ahead of first "value=" so output is like:
284t810 shfn4wksn value=39h1047 hs2krj8dne value=3700p134
I just want to delete everything else and keep only numbered value which is after "value="
Sorry if there is any confusion. Using stackoverflow for first time.
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
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
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
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With