1. смысл такой, надо написать условие в виде: начальное условие (это я написал), какая угодно комбинация из a-zA-Z0-9_[]{}'^\ без огграничения длинны, но до первого пробела, и в конце строка константа (has joined). вот самая загвоздка на какой угодно комбинации

фишка типа [a-zA-Z0-9_\[\]\{\}'\^] has joined не пахает.
2. в файле хранится инфа в виде
[:] <слово> фраза
пробовал читать с помощью file(). вот если слово начинается с _ - ну вобщем не буква... то он читает... а если с буквы, то он выкидывает <cлово> вообще из строки.
пробовал читать построчно с помощью fgets() - та ж фигня. что случилось?