Sto provando a vedere la documentazione di str_replace(), ma php.net non mi si apre.
A memoria mi pare di ricordare che str_replace() non accetti espressioni regolari, quindi la tua espressione penso sia interpretata come una semplice stringa, usa preg_replace() per eliminare gli iframe.