Search code examples
phpsubstrstrpos

PHP substr after a certain char, a substr + strpos elegant solution?


let's say I want to return all chars after some needle char 'x' from:

$source_str = "Tuex helo babe".

Normally I would do this:

if( ($x_pos = strpos($source_str, 'x')) !== FALSE )
   $source_str = substr($source_str, $x_pos + 1);

Do you know a better/smarter (more elegant way) to do this?

Without using regexp that would not make it more elegant and probably also slower.

Unfortunately we can not do:

$source_str = substr(source_str, strpos(source_str, 'x') + 1);

Because when 'x' is not found strpos returns FALSE (and not -1 like in JS). FALSE would evaluate to zero, and 1st char would be always cut off.

Thanks,


Solution

  • Your first approach is fine: Check whether x is contained with strpos and if so get anything after it with substr.

    But you could also use strstr:

    strstr($str, 'x')
    

    But as this returns the substring beginning with x, use substr to get the part after x:

    if (($tmp = strstr($str, 'x')) !== false) {
        $str = substr($tmp, 1);
    }
    

    But this is far more complicated. So use your strpos approach instead.