I'm looking to do the opposite of this.
<?php
// get the content
$block = get_the_content();
// check and retrieve blockquote
if(preg_match('~<blockquote>([\s\S]+?)</blockquote>~', $block, $matches))
// output blockquote
echo '<p><span>'.$matches[1].'</span></p>';
?>
How to show the content outside of the blockquote.
You really shouldn't use regular expression for HTML-parsing. I recommend using phpQuery to solve your problem and any other similar problems in the future. phpQuery is working like jQuery to select elements in HTML and to modify them. In phpQuery you can just do this:
$markup = '<div><span>Hello</span><blockquote>Remove me!</blockquote>World<div/>';
$doc = phpQuery::newDocumentHTML($markup);
$doc['blockquote']->remove();
echo $doc;
So you load your HTML content to phpQuery, select the blockquote, remove it, and print out the changed string.
If you still insist to do it with regex, here it is:
$block = preg_replace('~<blockquote>([\s\S]+?)</blockquote>~', '', $block);
echo $block;