実現したいこと

カスタムフィールド(ACF)に書き込んだコードを、サイト上に表示ようとしており、読込書き出し自体は問題なく実装できています。
コード上のコメントや <?php ~ ?>で囲われた部分の色を変えたく、出力時にスタイル用のタグで囲みたいと考えています。

発生している問題・分からないこと

場所により 2行以上になる事もあるので、preg_replace での書換にして一行部分は囲めたのですが、複数行のphpコードが上手く囲めません。
正規表現が良く分かっていない事もあり、どのように書けば良いかわかりません。
記述の問題点や解決方法をご指南頂けるとありがたいです。
よろしくお願いいたします。

該当のソースコード

PHPコード

1<?php 2$code = get_field('code_field');3if (!$code){ return; }4$c_type = get_field('code_type');5$t_value = $c_type['value'] ? $c_type['value'] : '';6$t_label = $c_type['label'] ? $c_type['label'] : '';7// エンティンティティ8$code = str_replace('<', '&lt;', $code);9// class追加10$c_change = array(11 '/\/\/(.*?)\n/' => '<span class="comm">//$1</span>'."\n",12 '/\/\*(.*?)\*\//' => '<span class="comm">/*$1*/</span>',13 '/&lt;\?php[\s\S]*?\?>/' => '<span class="txt-php">$0</span>'14);15$c_target = array_keys($c_change);16$c_replace = array_values($c_change);17$code = preg_replace($c_target, $c_replace, $code);18?>19 20<div class="<?php echo $className . ' ' . $t_value; ?>">21 <p><?php echo $t_label; ?> コード</p>22 <?php 23 echo '<pre class="code-in"><code>';24 25 $code_ar = explode("\n", $code);26 foreach($code_ar as $ar){27 echo '<p>' . $ar . '</p>';28 } 29 echo '</pre></code>';30 ?>31</div>32

<div class="my-code cd-php"> <p>PHP コード</p> <pre class="code-in"><code><p><span class="txt-php">&lt;?php </p><p><span class="comm">// "className"(投稿 追加CSS) </span></p><p>$className = !empty($block['className']) ? $block['className'] . ' my-code' : 'my-code'; </p><p><span class="comm">// カスタムフィールド呼び出し </span></p><p>$code = get_field('code_field'); </p><p>if (!$code){ return; } </p><p>$c_type = get_field('code_type'); </p><p>$t_value = $c_type['value'] ? $c_type['value'] : ''; </p><p>$t_label = $c_type['label'] ? $c_type['label'] : ''; </p><p><span class="comm">// エンティンティティ </span></p><p>$code = str_replace('&lt;', '&lt;', $code); </p><p><span class="comm">// class追加 </span></p><p>$c_change = array( </p><p> '/\/\/(.*?)\n/' => '&lt;span class="comm"><span class="comm">//$1&lt;/span>'."\n", </span></p><p> '/\/\*(.*?)\*\<span class="comm">//' => '&lt;span class="comm"><span class="comm">/*$1*/</span>&lt;/span>', </span></p><p> '/&lt;\?php[\s\S]*?\?></span>/' => '&lt;span class="txt-php">$0&lt;/span>' </p><p>); </p><p>$c_target = array_keys($c_change); </p><p>$c_replace = array_values($c_change); </p><p>$code = preg_replace($c_target, $c_replace, $code); </p><p>?> </p><p> </p><p>&lt;div class="<span class="txt-php">&lt;?php echo $className . ' ' . $t_value; ?></span>"> </p><p> &lt;p><span class="txt-php">&lt;?php echo $t_label; ?></span> コード&lt;/p> </p><p> <span class="txt-php">&lt;?php </p><p> echo '&lt;pre class="code-in">&lt;code>'; </p><p> </p><p> $code_ar = explode("\n", $code); </p><p> foreach($code_ar as $ar){ </p><p> echo '&lt;p>' . $ar . '&lt;/p>'; </p><p> } </p><p> echo '&lt;/pre>&lt;/code>'; </p><p> ?></span> </p><p>&lt;/div></p></pre></code></div>

試したこと・調べたこと

上記の詳細・結果

検索語句を変え、色々探し試してみたのですが、知識不足の為だと思いますが答えが見つかりませんでした。

補足

特になし