ma tu non popoli l'array $matches qui preg_match_all('/\<span class="fsm">(.*?)<\/span>/i', $str, $matches, PREG_SET_ORDER)?è su quello che devi fare il print_r() per sapere se effettivamente ci sono elementi.