Добро пожаловать, Гость!
Замена функции
Общие вопросы | Замена функции

Замена функции
22 Фев 2016Всем привет. Нужно заменить устаревшею функцию ereg на preg_match, но не получается, выдает ошибку ^ - No ending delimiter '^'. Кто знает как переписать лучше? Вот код
<?phpif (ereg('^.',$rd))continue;?>
Комментарии:



<?
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 можно сделать лучше ,так как это код врятле будет использоваться часто и так сойдёт (лень)
______________________
Я есть сущность

YETIZLO (22 Фев 2016):
vvb, решил DCMS 6.6.4 посмотреть. Ужаснулся сколько там функций устаревших.
YETIZLO, ну на момент написания этой версии они были актуальны ))))vvb, решил DCMS 6.6.4 посмотреть. Ужаснулся сколько там функций устаревших.



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; Вот так ошибка исчезает. Но перестает работать капча и многое другое.

Автор темы
vvb, решил DCMS 6.6.4 посмотреть. Ужаснулся сколько там функций устаревших.

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;

Автор темы
vvb, спасибо) Вроде работает)
<?phpif (eregi('.sql$',$rd)) на if (preg_match('/(.*).sql$/i',$rd))?>
я делал так, вот проблема была с if (ereg('^.',$rd))continue;