function auto_id_headings( $content ) {
        $content = preg_replace_callback( '/(\<h[1-6](.*?))\>(.*)(<\/h[1-6]>)/i', function( $matches ) {
                if ( ! stripos( $matches[0], 'id=' ) ) :
                        $matches[0] = $matches[1] . $matches[2] . ' id="' . [sanitize_title](http://codex.wordpress.org/Plugin_API/Filter_Reference/sanitize_title)( $matches[3] ) . '">' . $matches[3] . $matches[4];
                endif;
                return $matches[0];
        }, $content );
    return $content;
}
[add_filter](http://codex.wordpress.org/Function_Reference/add_filter)( '[the_content](http://codex.wordpress.org/Plugin_API/Filter_Reference/the_content)', 'auto_id_headings' );