1. preg_replace 함수에 관한 설명은 메뉴얼에 보면 나와 있으니 패스하고, 분석해보자면
"문자열을 처음부터 읽다가 공백이 두개 이상이 나오면 매칭시켜라" 이고, 이렇게 매칭된 문자열(두개 이상인 공백)을 공백 하나로 치환하는 것입니다. 괄호는 패턴을 그룹으로 묶어주고 왼쪽으로부터 매칭되는 그룹에 해당하는 문자열이 $1부터 대입됩니다. \s는 공백문자(공백문자가 좀 애매한데 시스템에 따라서 공백문자라는 것에 포함되는 것이 다릅니다. 이를테면 스페이스나 어떤건 캐리지 리턴도 공백문자로 포함시킨다던지..)를 의미하며 {Min, Max}는 이 구문 바로 앞의 패턴이 Min값부터 Max값까지 나오는 것에 매칭한다는 의미입니다.
정규 표현식 설명하자면 한도 끝도 없으니, 아주 멋진 책 "정규표현식의 해부와 실습"을 참조하시길.. (저도 공부중입니다. ^^)
2. file_get_contents는 php 4.3이상부터 지원되는 함수고 이전의 fopen, fread, fclose등으로 진행되었던 파일 읽기 패턴을 대폭 줄여서 위 함수 하나로 수행하도록 작성된 함수입니다. file_put_contents는 반대로 fopen, fwrite, fclose를 하나로 줄여주는 함수지요.. 대신에 file_put_contents는 php5부터 지원합니다.