PHP substring extraction. Get the string before the first '/' or the whole string


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?

9/2/2010 8:21:05 AM

Accepted Answer

Use explode()

$arr = explode("/", $string, 2);
$first = $arr[0];

In this case, I'm using the limit parameter to explode so that php won't scan the string any more than what's needed.

12/20/2009 2:21:28 PM

The most efficient solution is the strtok function:

strtok($mystring, '/')

For example:

$mystring = 'home/cat1/subcat2/';
$first = strtok($mystring, '/');
echo $first; // home


$mystring = 'home';
$first = strtok($mystring, '/');
echo $first; // home

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow