Добро пожаловать, Гость!
Замена функции
Общие вопросы | Замена функции
YETIZLO : Замена функции
22 Фев 2016Всем привет. Нужно заменить устаревшею функцию ereg на preg_match, но не получается, выдает ошибку ^ - No ending delimiter '^'. Кто знает как переписать лучше? Вот код
<?phpif (ereg('^.',$rd))continue;?>
Комментарии:
Saint
<?
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 можно сделать лучше ,так как это код врятле будет использоваться часто и так сойдёт (лень)
______________________
Я есть сущность
vvb 22 Фев 2016
YETIZLO (22 Фев 2016):
vvb, решил DCMS 6.6.4 посмотреть. Ужаснулся сколько там функций устаревших.
YETIZLO, ну на момент написания этой версии они были актуальны ))))vvb, решил DCMS 6.6.4 посмотреть. Ужаснулся сколько там функций устаревших.
Engine
YETIZLO (22 Фев 2016):
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;
}?>
Добавлено:
Engine, if (preg_match('/^./', $rd))continue; пробовал. Здесь индикатора i нет.
Добавлено:
if (preg_match('/^.^/i', $rd))continue; Вот так ошибка исчезает. Но перестает работать капча и многое другое.
YETIZLO, модификатор i служит для добавления регистронезависимости. В данном случае он ни к чему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;
}?>
Добавлено:
Engine, if (preg_match('/^./', $rd))continue; пробовал. Здесь индикатора i нет.
Добавлено:
if (preg_match('/^.^/i', $rd))continue; Вот так ошибка исчезает. Но перестает работать капча и многое другое.
YETIZLO 22 Фев 2016Автор темы
vvb, решил DCMS 6.6.4 посмотреть. Ужаснулся сколько там функций устаревших.
vvb 22 Фев 2016
YETIZLO (22 Фев 2016):
vvb, спасибо) Вроде работает)
<?phpif (eregi('.sql$',$rd)) на if (preg_match('/(.*).sql$/i',$rd))?>
я делал так, вот проблема была с if (ereg('^.',$rd))continue;
YETIZLO, перед .sql пропал обратный слеш, как / но в другую сторонуvvb, спасибо) Вроде работает)
<?phpif (eregi('.sql$',$rd)) на if (preg_match('/(.*).sql$/i',$rd))?>
я делал так, вот проблема была с if (ereg('^.',$rd))continue;
YETIZLO 22 Фев 2016Автор темы
vvb, спасибо) Вроде работает)
<?phpif (eregi('.sql$',$rd)) на if (preg_match('/(.*).sql$/i',$rd))?>
я делал так, вот проблема была с if (ereg('^.',$rd))continue;

