Это не совсем ответ, потому что вы попросили регулярное выражение, но я просто написал очень грязную функцию для этого:
<code><?php
$html = ' <pre>hello > <
& GT; & Lt;
';
function stringReplaceThing ($ str) {
$ offset = 0;
$ num = 0;
$ preContents = array ();
$ length = strlen ($ str);
// копировать строку, чтобы сохранить смещения / позиции в первой строке после замены
$ Str2 = $ ул;
// получить следующую позицию
tag
while (false !== ($startPos = stripos($str, '<pre>', $offset))) {
//the end of the opening <pre> tag
$startPos += 5;
//try to get closing tag
$endPos = stripos($str, '
', $ startPos);
if ($ endPos === false) {
die ('незакрытый пред тег ..')
}
$ stringWithinPreTags = substr ($ str, $ startPos, $ endPos - $ startPos);
// заменить строку внутри тега каким-то токеном
if (strlen ($ stringWithinPreTags)) {
$ token = "!! T {$ num} !!";
$ str2 = str_replace ($ stringWithinPreTags, $ token, $ str2);
$ preContents [$ token] = $ stringWithinPreTags;
$ Num ++;
}
$ offset = $ endPos + 5;
}
// сделать фактическую замену
$ str2 = str_replace (array ('& gt;', '& lt;'), array ('>', '<'), $ str2);
// вернуть содержимое блоков <pre> обратно
$ str2 = str_replace (array_keys ($ preContents), array_values ($ preContents), $ str2);
вернуть $ str2;
}
print stringReplaceThing ($ html);