<?php
$content = '

<code>
  <?php echo \'<p>Привет, мир!</p>\'; ?>
</code>

<p></p>

<code>
  <?php echo \'<p>Добрый день, мир!</p>\'; ?>
</code>

<div></div>

<code>
  <?php echo \'<p>Добрый вечер, мир!</p>\'; ?>
</code>

<p>И т. д.</p>

';

preg_match_all( "/(?<=<code>).*?(?=<\/code>)/uis", $content, $matches );

var_dump($matches);

foreach($matches[0] as $one) {
  $obr = htmlspecialchars( $one, ENT_QUOTES, 'UTF-8' );
  $content = str_replace( $one, $obr, $content);
}
  
var_dump($content);