iconv(mb_detect_encoding($text, mb_detect_order(), true), "UTF-8", $text);
Wiem, że kombiwnowałeś, ale może nie z mb_detect_encoding
Nie zawsze działa, ale pomaga. Na Stacku ludzie mają z tym problemy już od paru lat. Nie ma 100% pewnej metody. Aby być pewnym, musisz po prostu znać kodowanie strony i tyle. Wtedy oczywiście foreach odpada
Źródło