$extractedString = substr( $exampleString, 1, -1 );
n'est absolument pas équivalent à
preg_match( '#^\[(\w+)\]$#', $exampleString, $matches );
En effet, dans le premier cas, il n'y a aucune vérification que le premier caractère est bien [ et le dernier ], ni que la chaine à l'intérieur des crochets ne contient que des caractères alphanumérique, contrairement à ce qui se passe dans le deuxième cas avec l'expression régulière.
Aussi, pour avoir une comparaison équitable, il faudrait faire dans le premier cas, au moins ceci :
if(substr($exampleString, 0, 1) =='[' && substr($exampleString, -1) == ']') $extractedString = substr( $exampleString, 1, -1 );
En conséquence, les résultats des temps d'exécution sont tout autre : le premier cas est de 2 à 5 fois plus long que l'usage de l'expression régulière.