Тема: Замена функции (Движок DCMS-Social/Общие вопросы) Engine (22 Feb 2016 в 18:15) if (preg_match(\'/^./\', $rd))continue; [i]Добавлено:[/i] Но это бессмысленное условие. Оно будет всегда выполнятся если передать любую строку vvb (22 Feb 2016 в 18:25) Теоретически - обрамляешь регклярку в # и вместо ereg пишешь preg_match . Практически - Скинь код и я напишу как правильно YETIZLO (22 Feb 2016 в 18:27) vvb, <?phpif (!isset($install)){ // выполнение одноразовых запросов $opdirtables=opendir(H.\'sys/update/\'); while ($rd=readdir($opdirtables)) { if (ereg(\'^.\',$rd))continue; if (isset($set[\'update\'][$rd]))continue; if (eregi(\'.sql$\',$rd)) { include_once H.\'sys/inc/sql_parser.php\'; $sql=SQLParser::getQueriesFromFile(H.\'sys/update/\'.$rd); for ($i=0;$i<count($sql);$i++){mysql_query($sql[$i]);} $set[\'update\'][$rd]=true; $save_settings=true; } elseif(eregi(\'.php$\',$rd)) { include_once H.\'sys/update/\'.$rd; $set[\'update\'][$rd]=true; $save_settings=true; }?> [i]Добавлено:[/i] Engine, if (preg_match(\'/^./\', $rd))continue; пробовал. Здесь индикатора i нет. [i]Добавлено:[/i] if (preg_match(\'/^.^/i\', $rd))continue; Вот так ошибка исчезает. Но перестает работать капча и многое другое. vvb (22 Feb 2016 в 18:38) YETIZLO, меняешь if (ereg(\'^.\',$rd))continue; На if ($rd==\'.\' or $rd==\'..\')continue; if (eregi(\'.sql$\',$rd)) на if (preg_match(\'/(.*).sql$/i\',$rd)) И далее примерно так же. Есть, конесно, вариант побыстрее, но с тела лень писать. YETIZLO (22 Feb 2016 в 18:49) vvb, спасибо) Вроде работает)<?phpif (eregi(\'.sql$\',$rd)) на if (preg_match(\'/(.*).sql$/i\',$rd))?> я делал так, вот проблема была с if (ereg(\'^.\',$rd))continue; vvb (22 Feb 2016 в 18:55) --Цитата-- YETIZLO (22 Feb 2016 в 18:49): vvb, спасибо) Вроде работает)<?phpif (eregi(\'.sql$\',$rd)) на if (preg_match(\'/(.*).sql$/i\',$rd))?> я делал так, вот проблема была с if (ereg(\'^.\',$rd))continue; ---------- YETIZLO, перед .sql пропал обратный слеш, как / но в другую сторону YETIZLO (22 Feb 2016 в 18:57) vvb, решил DCMS 6.6.4 посмотреть. Ужаснулся сколько там функций устаревших. Engine (22 Feb 2016 в 18:59) --Цитата-- YETIZLO (22 Feb 2016 в 18:27): vvb, <?phpif (!isset($install)){ // выполнение одноразовых запросов $opdirtables=opendir(H.\'sys/update/\'); while ($rd=readdir($opdirtables)) { if (ereg(\'^.\',$rd))continue; if (isset($set[\'update\'][$rd]))continue; if (eregi(\'.sql$\',$rd)) { include_once H.\'sys/inc/sql_parser.php\'; $sql=SQLParser::getQueriesFromFile(H.\'sys/update/\'.$rd); for ($i=0;$i<count($sql);$i++){mysql_query($sql[$i]);} $set[\'update\'][$rd]=true; $save_settings=true; } elseif(eregi(\'.php$\',$rd)) { include_once H.\'sys/update/\'.$rd; $set[\'update\'][$rd]=true; $save_settings=true; }?> [i]Добавлено:[/i] Engine, if (preg_match(\'/^./\', $rd))continue; пробовал. Здесь индикатора i нет. [i]Добавлено:[/i] if (preg_match(\'/^.^/i\', $rd))continue; Вот так ошибка исчезает. Но перестает работать капча и многое другое. ---------- YETIZLO, модификатор i служит для добавления регистронезависимости. В данном случае он ни к чему vvb (22 Feb 2016 в 19:06) --Цитата-- YETIZLO (22 Feb 2016 в 18:57): vvb, решил DCMS 6.6.4 посмотреть. Ужаснулся сколько там функций устаревших. ---------- YETIZLO, ну на момент написания этой версии они были актуальны )))) YETIZLO (22 Feb 2016 в 19:14) vvb, функции быстро устаревают. Не удивительно. Saint (23 Feb 2016 в 07:38) <? if (!isset($install)){ // выполнение одноразовых запросов $opdirtables = opendir(H.\'install/update/\'); while ($rd= readdir($opdirtables)) { if (preg_match(\'#^.#\',$rd) || isset($set[\'update\'][$rd]))continue; if (preg_match(\'#.sql$#i\',$rd)) { include_once H.\'sys/inc/sql_parser.php\'; $sql = SQLParser::getQueriesFromFile(H.\'install/update/\'. $rd); for ($i = 0; $i < count($sql); $i++) { mysql_query($sql[$i]); } $set[\'update\'][$rd] = true; $save_settings = true; } elseif(preg_match(\'#.php$#i\', $rd)) { include_once H.\'install/update/\'. $rd; $set[\'update\'][$rd]= true; $save_settings = true; } } ?> P.s можно сделать лучше ,так как это код врятле будет использоваться часто и так сойдёт (лень) Источник: http://www.dcms-social.ru/forum/13/34/61232/