strpos($str, $token) === 0と$str[0]===$token
FormPopulationFilterを眺めてたらstrpos($action, '/')===0とかいう記述があったのでこれも含めて再度ベンチマークをとってみた。前回より微妙に早くなってるのは$tokenも先に定義してるので""のパース時間が短縮されたおかげだと思います。
[senna@vine senna]$ time php -r '$str="abbbb"; $token="a"; for($i=0; $i < 1000000; $i++){ $str[0] === $token;}' real 0m1.617s user 0m1.610s sys 0m0.010s [senna@vine senna]$ time php -r '$str="abbbb"; $token="a"; for($i=0; $i < 1000000; $i++){ strpos($str, $token)===0;}' real 0m2.174s user 0m2.170s sys 0m0.000s [senna@vine senna]$ time php -r '$str="abbbb"; $token="a"; for($i=0; $i < 1000000; $i++){ substr($str, 0)===$token;}' real 0m2.466s user 0m2.460s sys 0m0.010s [senna@vine senna]$ time php -r '$str="abbbb"; $token="a"; for($i=0; $i < 1000000; $i++){;}' real 0m0.682s user 0m0.670s sys 0m0.010s
ということで、一文字目がある決まった文字であるかを判別するには$str[0]===$tokenを用いましょう。