Я думаю, что это регулярное выражение на основе lookahead и lookbehind будет работать для вас:
$str = <<< EOF
<code><div class="b-line"></div> \t
\n\n\n \t \n poo
<lol>
n \n \n \t </code>
EOF;
$str = preg_replace_callback('#(?<=<code><div class="b-line"></div>)(.*?)(\s*<[^>]*>\s*)(.*?)(?=</code>)#is',
create_function('$m',
'return str_replace(array("\n", "\t", " "), "", $m[1]).$m[2].str_replace(array("\n", "\t", " "), "", $m[3]);'),
$str);
var_dump ( $str );
ВЫВОД:
string(51) "<code><div class="b-line"></div>poo
<lol>
n</code>"