I am trying to extract a substring. I need some help with doing it in PHP.
Here are some sample strings I am working with and the results I need:
home/cat1/subcat2 => home
test/cat2 => test
startpage => startpage
I want to get the string till the first /
, but if no /
is present, get the whole string.
I tried,
substr($mystring, 0, strpos($mystring, '/'))
I think it says - get the position of /
and then get the substring from position 0 to that position.
I don't know how to handle the case where there is no /
, without making the statement too big.
Is there a way to handle that case also without making the PHP statement too complex?
One-line version of the accepted answer:
Should work in php 5.4+
Late is better than never. php has a predefined function for that. here is that good way.
if you want to get the part before match just set before_needle (3rd parameter) to
true
http://php.net/manual/en/function.strstr.phpThe function strstr() in PHP 5.3 should do this job.. The third parameter however should be set to true..
But if you're not using 5.3, then the function below should work accurately:
I haven't tested it though, but this should work just fine.. And it's pretty fast as well
I think this should work?
The most efficient solution is the
strtok
function:For example:
and
Use
explode()
In this case, I'm using the
limit
parameter toexplode
so that php won't scan the string any more than what's needed.