とりあえず、データの中に改行は含まれない、という前提にしてしまえば比較的楽なのではないかと。 いうことで、暫定版ですが。。
function add_comma($str) {
    if (preg_match('/"/', $str)) {
        $str = preg_replace('/"/', '""', $str);
    }
    if (preg_match('/[,"]/', $str)) {
        $str = '"' . $str . '"';
    }
    return $str;
}