Removing tags around tags

Greedy and Ungreedy modifier:

preg_replace( '/<p>(.+)<\/p>/Uuis', '$1', $content );

Tested with this script:

<?php
$c = array();
$c[] = '<p>text</p>';
$c[] = '<p><div>text</div></p>';
$c[] = '<p><div><div>text</div></div></p>';

foreach ( $c as $content ) {
    $e = preg_replace( '/<p>(.+)<\/p>/Uuis', '$1', $content );
    var_dump( $e );
}

Also try remove_filter( 'the_content', 'wpautop' );