This challenged my understanding of performance around these functions.  I wrote a quick test (https://gist.github.com/7799c3ee3830dd8f2d00) and it appears to be like about 60% slower with substr vs strpos?