вопрос
dle 10.6
Делал как-то по инструкции глобальные теги [newsid=1,2] текст [/newsid] и [not-newsid=1,2] текст [/not-newsid]
Сейчас пытаюсь перейти на php 7.2
Выдает ошибки из-за которых белый экран.
Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in
Помогите заменить preg_replace на preg_replace_callback
В /engine/modules/main.php
В /engine/modules/functions.php
Заранее, благодарю!
Делал как-то по инструкции глобальные теги [newsid=1,2] текст [/newsid] и [not-newsid=1,2] текст [/not-newsid]
Сейчас пытаюсь перейти на php 7.2
Выдает ошибки из-за которых белый экран.
Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in
Помогите заменить preg_replace на preg_replace_callback
В /engine/modules/main.php
/* добавил вывод [newsid=1,2] текст [/newsid] и [not-newsid=1,2] текст [/not-newsid] */
if($dle_module == "showfull") {
$news_id = $_GET['newsid'];
if( strpos( $tpl->copy_template, "[not-newsid=" ) !== false ) {
$tpl->copy_template = preg_replace( "#\\[not-newsid=(.+?)\\](.*?)\\[/not-newsid\\]#ies", "check_newsid('\\1', '\\2', '{$news_id}', false)", $tpl->copy_template );
}
if( strpos( $tpl->copy_template, "[newsid=" ) !== false ) {
$tpl->copy_template = preg_replace ( "#\\[newsid=(.+?)\\](.*?)\\[/newsid\\]#ies", "check_newsid('\\1', '\\2', '{$news_id}')", $tpl->copy_template );
}
$tpl->set_block( "'\\[cattext\\](.*?)\\[/cattext\\]'si", "" );
} else {
$tpl->set( '[cattext]', "" );
$tpl->set( '[/cattext]', "" );
$tpl->copy_template = preg_replace ( "#\\[newsid=(.+?)\\](.*?)\\[/newsid\\]#is", "", $tpl->copy_template );
$tpl->copy_template = preg_replace ( "#\\[not-newsid=(.+?)\\](.*?)\\[/not-newsid\\]#is", "", $tpl->copy_template );
}
/*END добавил вывод [newsid=1,2] текст [/newsid] и [not-newsid=1,2] текст [/not-newsid] */
В /engine/modules/functions.php
/* добавил вывод [newsid=1,2] текст [/newsid] и [not-newsid=1,2] текст [/not-newsid] */
function check_newsid($cats, $block, $category, $action = true) {
$cats = str_replace(" ", "", $cats );
$cats = explode( ',', $cats );
$category = explode( ',', $category );
$found = false;
foreach ( $category as $element ) {
if( $action ) {
if( in_array( $element, $cats ) ) {
$block = str_replace( '\"', '"', $block );
return $block;
}
} else {
if( in_array( $element, $cats ) ) {
$found = true;
}
}
}
if ( !$action AND !$found ) {
$block = str_replace( '\"', '"', $block );
return $block;
}
return "";
}
/* END добавил вывод [newsid=1,2] текст [/newsid] и [not-newsid=1,2] текст [/not-newsid] */
Заранее, благодарю!
Функция для /engine/modules/functions.php
Код для /engine/modules/main.php
function checkNewsid($idList, $returnData, $newsID, $action = true)
{
$returnData = str_replace('\"', '"', $returnData);
$idList = explode(',', $idList);
$found = false;
foreach ($idList as $element) {
if ($action) {
if ($element == $newsID) {
return $returnData;
}
} else {
if ($element == $newsID) {
$found = true;
break;
}
}
}
if (!$action && !$found) {
return $returnData;
}
return '';
}
Код для /engine/modules/main.php
if ($dle_module == 'showfull') {
$news_id = intval($_GET['newsid']);
if (strpos($tpl->copy_template, '[not-newsid=') !== false) {
$tpl->copy_template = preg_replace_callback("#\\[not-newsid=(.+?)\\](.*?)\\[/not-newsid\\]#is", function($matches) use($news_id) {
return checkNewsid($matches[1], $matches[2], $news_id, false);
}, $tpl->copy_template);
}
if (strpos($tpl->copy_template, '[newsid=') !== false) {
$tpl->copy_template = preg_replace_callback("#\\[newsid=(.+?)\\](.*?)\\[/newsid\\]#is", function($matches) use($news_id) {
return checkNewsid($matches[1], $matches[2], $news_id);
}, $tpl->copy_template);
}
$tpl->set_block("'\\[cattext\\](.*?)\\[/cattext\\]'si", '');
} else {
$tpl->set_block("'\\[cattext\\](.*?)\\[/cattext\\]'si", '\\1');
$tpl->copy_template = preg_replace("#\\[newsid=(.+?)\\](.*?)\\[/newsid\\]#is", '', $tpl->copy_template);
$tpl->copy_template = preg_replace("#\\[not-newsid=(.+?)\\](.*?)\\[/not-newsid\\]#is", '', $tpl->copy_template);
}