Splitting strings in PHP and get last part
I need to split a string in PHP by "-" and get the last part.
So from this:
abc-123-xyz-789
I expect to get
"789"
This is the code I've come up with:
substr(strrchr($urlId, '-'), 1)
which works fine, except:
If my input string does not contain any "-", I must get the whole string, like from:
123
I need to get back
123
and it needs to be as fast as possible.
-
split($pattern,$string)
split strings within a given pattern or regex (it's deprecated since 5.3.0) -
preg_split($pattern,$string)
split strings within a given regex pattern -
explode($pattern,$string)
split strings within a given pattern -
end($arr)
get last array element
So:
end(split('-',$str))
end(preg_split('/-/',$str))
$strArray = explode('-',$str)
$lastElement = end($strArray)
Will return the last element of a -
separated string.
And there's a hardcore way to do this:
$str = '1-2-3-4-5';
echo substr($str, strrpos($str, '-') + 1);
// | '--- get the last position of '-' and add 1(if don't substr will get '-' too)
// '----- get the last piece of string after the last occurrence of '-'
$string = 'abc-123-xyz-789';
$exploded = explode('-', $string);
echo end($exploded);
This does not have the E_STRICT issue.