Помогите исправить код с preg_replace под php 7

K5
На сайте с 21.07.2010
Offline
209
663

Дано:

".opt_case($AdminMap, "
<div><a href='$fullLink'>".substr(preg_replace($search, $replace, $f_TextContent), 0, 100)."</a></div>
", "
$f_TextContent $f_AdminButtons
")."
$search = array ("'<script[^>]*?>.*?</script>'si", // Вырезает javaScript
"'<[\/\!]*?[^<>]*?>'si", // Вырезает HTML-теги
"'([\r\n])[\s]+'", // Вырезает пробельные символы
"'&(quot|#34);'i", // Заменяет HTML-сущности
"'&(amp|#38);'i",
"'&(lt|#60);'i",
"'&(gt|#62);'i",
"'&(nbsp|#160);'i",
"'&(iexcl|#161);'i",
"'&(cent|#162);'i",
"'&(pound|#163);'i",
"'&(copy|#169);'i",
"'***(\d+);'e"); // интерпретировать как php-код

$replace = array ("",
"",
"\\1",
"\"",
"&",
"<",
">",
" ",
chr(161),
chr(162),
chr(163),
chr(169),
"chr(\\1)");

До чего дошел начитавшись интернета:

".opt_case($AdminMap, "
<div><a href='$fullLink'>".substr(preg_replace_callback($search, $replace, $f_TextContent), 0, 100)."</a></div>
", "
$f_TextContent $f_AdminButtons
")."
$search = array ("'<script[^>]*?>.*?</script>'si", // Вырезает javaScript
"'<[\/\!]*?[^<>]*?>'si", // Вырезает HTML-теги
"'([\r\n])[\s]+'", // Вырезает пробельные символы
"'&(quot|#34);'i", // Заменяет HTML-сущности
"'&(amp|#38);'i",
"'&(lt|#60);'i",
"'&(gt|#62);'i",
"'&(nbsp|#160);'i",
"'&(iexcl|#161);'i",
"'&(cent|#162);'i",
"'&(pound|#163);'i",
"'&(copy|#169);'i",
"'***(\d+);'"); // интерпретировать как php-код

$replace = array (function($m0){return $m0[0];},
function($m1){return $m1[0];},
function($m2){return $m2[1];},
"\"", //тут не знаю как
"&", //тут не знаю как
"<", //тут не знаю как
">", //тут не знаю как
" ", //тут не знаю как
chr(161), //тут не знаю как
chr(162), //тут не знаю как
chr(163), //тут не знаю как
chr(169), //тут не знаю как
function($m12){return $m12[1];});

Полный бред делаю или все же? Подскажите как правильно исправить.

аська 45два48499два записки на работе (http://memoryhigh.ru) помогу с сайтом, удалю вирусы, настрою впс -> отзывы ТУТ (/ru/forum/836248) и ТАМ (http://www.maultalk.com/topic140187.html) !!!всегда проверяйте данные людей, которые сами пишут вам в аську или скайп!!!
edogs software
На сайте с 15.12.2005
Offline
775
#1

kgtu5,

Модификатор /e Вам мешает

"'***(\d+);'e"); // интерпретировать как php-код

Вообще это ужасная идея выполнять код найденные регулярками, небезопасно.

Но уж если так приспичило, то делайте

preg_match_all по этому ***(\d+), а потом перебирая все вхождения в полученном массиве результатов - делайте для них eval и заменяйте найденное значение на результат.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
K5
На сайте с 21.07.2010
Offline
209
#2

edogs, код не мой, он исправно работает на пхп ниже 5.4 (стартпост - Дано), нужно его переделать под пхп 7

модификатор убран, устаревшая функция заменена, осталось изменить регулярные выражения, но пока до правильного варианта не додумался 😕 т.к. почти не знаю пхп.

LEOnidUKG
На сайте с 25.11.2006
Offline
1771
#3
✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий