Прошу помощи: Денвер находит ошибку в коде.

Valeriy
На сайте с 19.04.2007
Offline
110
836

Скрипт работает сейчас нормально на сайтах в сети. Но вот установил новый Денвер (РНР 5.3) и тот выдает ошибку постоянно

Deprecated: Function eregi() is deprecated in Z:\home\test1.ru\www\2z\includes\classes\templates.class.php on line 91

А мне не один сайт настроить... Понимаю, что может и не критично (раз работает на сайтах), но жутко неприятно...

Движок сродни ДЛЕ, неплохой, но что-то его забросили разработчики.

Вот сам файл

<?php

/*
----------------------------------
2z project | http://2z-project.com
----------------------------------
*/

class tpl {

var $data = array();
var $root = '.';
var $ext = '.tpl';
var $da_vr = array();

function template($name, $dir, $file = '') {
global $lang;

if (is_dir($dir)) {
$this -> root = $dir;
}
else {
die(sprintf($lang['msge_no_tpldir'], $dir));
}

$nn = $name;
$ext = $this -> ext;
$name = $dir.'/'.$name.$ext;

if ($file) {
$name = $dir.$file;
}

if (!is_file($name)) {
die(sprintf($lang['msgе_no_tpl'], $name));
}

$fp = fopen($name,'r');
$data = filesize($name)?fread($fp,filesize($name)):'';
fclose($fp);

$this -> data[$nn] = $data;
}

function vars($nn, $vars = array()) {
global $lang, $member_db, $userROW, $config, $PHP_SELF;

$data = $this -> data[$nn];

preg_match_all('/(?<=\{)l_(.*?)(?=\})/i', $data, $larr);

foreach ($larr[0] as $k => $v) {
$name_larr = substr($v, 2);
$data = str_replace('{'.$v.'}', $lang[$name_larr], $data);
}

preg_match_all('/\[isplugin (.+?)\](.+?)\[\/isplugin\]/is', $data, $parr);
foreach ($parr[0] as $k => $v) {
//print "ISPLUG '$k' => '$v' [".$parr[1][$k]."][".$parr[2][$k]."]<br>\n";
$data = str_replace($v,status($parr[1][$k])?$parr[2][$k]:'', $data);
}

preg_match_all('/\[isnplugin (.+?)\](.+?)\[\/isnplugin\]/is', $data, $parr);
foreach ($parr[0] as $k => $v) {
$data = str_replace($v,status($parr[1][$k])?'':$parr[2][$k], $data);
}

preg_match_all('/(?<=\{)plugin_(.*?)(?=\})/i', $data, $parr);

foreach ($parr[0] as $k => $v) {
$name_parr = substr($v, 7);
if (preg_match('/^(.+)\_/', $name_parr, $match))
$name_parr = $match[1];

if (!status($name_parr)) {
$data = str_replace('{'.$v.'}', '', $data);
}
}

if ($PHP_SELF && $PHP_SELF == "admin.php") {
preg_match_all('/(?<=\{)c_(.*?)(?=\})/i', $data, $carr);

foreach ($carr[0] as $k => $v) {
$name_carr = substr($v, 2);
$data = str_replace('{'.$v.'}', $config[$name_carr], $data);
}
}

if ($vars['vars']) {
foreach ($vars['vars'] as $id => $var) {
if (eregi("\[", $id)) {
$data = str_replace($id, $var, $data);
}
else {
$data = str_replace('{'.$id.'}', $var, $data);
}
}
}

if ($vars['regx']) {
foreach ($vars['regx'] as $id => $var) {
$data = preg_replace($id, $var, $data);
}
}
$data = str_replace('{skins_url}', skins_url, $data);
$data = str_replace('{tpl_url}', tpl_url, $data);
$data = str_replace('{zz_url}', zz_url, $data);

$this -> da_vr[$nn] = $data;
}

function show($name) {
$ret = $this -> da_vr[$name];
$this -> da_vr[$name] = $this -> data[$name];
return $ret;
}
}
?>

Отблагодарю, чем смогу :)

ДП
На сайте с 23.11.2009
Offline
203
#1

Змените


if (eregi("\[", $id)) {

на


if (strpos($id,"[")!==false) {

У вас новый php, он ругается на устаревшую функцию eregi

Тут она используется для проверки наличия [ в строке, насколько я понял.

DV
На сайте с 01.05.2010
Offline
644
#2

Дикий пионер, +100

Valeriy, между версиями 5.2 и 5.3 есть несовместимости, вплоть до неработоспособности движков. У меня так OsCommerce загнулся после обновления сервера, весь глюками пошёл, всё не найду время сменить на новую версию...

VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
Valeriy
На сайте с 19.04.2007
Offline
110
#3

Дикий пионер, благодарю!

Valeriy добавил 12.07.2011 в 20:47

DenisVS, спасибо, буду иметь в виду.

Valeriy добавил 12.07.2011 в 23:02

Дикий пионер, еще, будьте добры - вот в этом месте тоже исправить бы... (это в админке фигня)

function check_uri($uri) {
if (ereg("@",$uri)) {
$uri="mailto:".$uri;
}
F
На сайте с 06.06.2008
Offline
51
#4

Valeriy, по аналогии:

function check_uri($uri) {

if (strpos($uri,"@")!==false) {
$uri="mailto:".$uri;
}
Valeriy
На сайте с 19.04.2007
Offline
110
#5

freesoccer, спасибо, понял аналогию :)

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