powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите устранить ошибку preg_replace(): The /e modifier is deprecated
11 сообщений из 11, страница 1 из 1
Помогите устранить ошибку preg_replace(): The /e modifier is deprecated
    #39136293
SQLWalker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Перешел на новый хостинг. Там PHP 5.6.16. На старом была версия 5.2

Теперь код
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
if(strlen($Condition['pattern'])&&preg_match($Condition['pattern'],$fileInfo['name'])){
	$allowedActions[$action] = array('link'=>str_replace('\\','/',
	
	preg_replace('/%([^%]+)%/e','isset($fileInfo[\'\\1\'])?$fileInfo[\'\\1\']:\'%\\1%\'',$Condition['link'])),
									'icon'=>$Condition['icon'],
									'target'=>$Condition['target'],
									'name'=>$action);
	if(!$allowedActions['default']['link']&&($action!='delete')){
		$allowedActions['default']=$allowedActions[$action];
		$allowedActions['default']['name'] = $action;
	}

}


На строке с preg_replace выдает ошибку
preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead

Помогите строку с preg_replace заменить на код с использованием preg_replace_callback.
...
Рейтинг: 0 / 0
Помогите устранить ошибку preg_replace(): The /e modifier is deprecated
    #39136372
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: php
1.
2.
3.
preg_replace_callback('/%([^%]+)%/', function($m) use ($fileInfo) {
    return isset($fileInfo[$m[1]]) ? $fileInfo[$m[1]] : '%' . $m[1] . '%';
}, $Condition['link']);

вроде так
...
Рейтинг: 0 / 0
Помогите устранить ошибку preg_replace(): The /e modifier is deprecated
    #39137035
SQLWalker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SharuPoNemnogu,

Ваш вариант вызывает ошибку
Parse error: syntax error, unexpected '=>' (T_DOUBLE_ARROW)
Т.е. на следующую строку
'icon'=>$Condition['icon'],

Точку с запятой в конце Вашего варианта я заменил на запятую.
...
Рейтинг: 0 / 0
Помогите устранить ошибку preg_replace(): The /e modifier is deprecated
    #39137189
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Помогите устранить ошибку preg_replace(): The /e modifier is deprecated
    #39137190
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если не понятно, переведите ошибку на русский и попытайтесь осознать.
...
Рейтинг: 0 / 0
Помогите устранить ошибку preg_replace(): The /e modifier is deprecated
    #39137466
SQLWalker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hett,
И что смешного? Перевод мне ясен - ошибка парсера.
Парсер ругается уже на следующую строку кода, с которой не было проблем.
Критическая ошибка возникает при замене кода на предложенный.
До замены ошибка некритическая, но из-за нее неимоверно растут логи.
...
Рейтинг: 0 / 0
Помогите устранить ошибку preg_replace(): The /e modifier is deprecated
    #39137503
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Покажите полностью код в последнем варианте
...
Рейтинг: 0 / 0
Помогите устранить ошибку preg_replace(): The /e modifier is deprecated
    #39137575
SQLWalker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hett,

Вот измененный код, который вызывает критическую ошибку парсера. Старый вызов preg_replace закоментирован.
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
if(strlen($Condition['pattern'])&&preg_match($Condition['pattern'],$fileInfo['name'])){
				$allowedActions[$action] = array('link'=>str_replace('\\','/',
				
				//preg_replace('/%([^%]+)%/e','isset($fileInfo[\'\\1\']) ? $fileInfo[\'\\1\'] : \'%\\1%\'', $Condition['link'])),
				
				preg_replace_callback('/%([^%]+)%/', function($m) use ($fileInfo) { return isset($fileInfo[$m[1]]) ? $fileInfo[$m[1]] : '%' . $m[1] . '%'; }, $Condition['link']),
				
												'icon'=>$Condition['icon'],
												'target'=>$Condition['target'],
												'name'=>$action);
				if(!$allowedActions['default']['link']&&($action!='delete')){
					$allowedActions['default']=$allowedActions[$action];
					$allowedActions['default']['name'] = $action;
				}

			}
...
Рейтинг: 0 / 0
Помогите устранить ошибку preg_replace(): The /e modifier is deprecated
    #39137580
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
if(strlen($Condition['pattern'])&&preg_match($Condition['pattern'],$fileInfo['name'])){
    $allowedActions[$action] = array('link'=>str_replace('\\','/',

        //preg_replace('/%([^%]+)%/e','isset($fileInfo[\'\\1\']) ? $fileInfo[\'\\1\'] : \'%\\1%\'', $Condition['link'])),

        preg_replace_callback('/%([^%]+)%/', function($m) use ($fileInfo) { return isset($fileInfo[$m[1]]) ? $fileInfo[$m[1]] : '%' . $m[1] . '%'; }, $Condition['link'])),

        'icon'=>$Condition['icon'],
												'target'=>$Condition['target'],
												'name'=>$action);
				if(!$allowedActions['default']['link']&&($action!='delete')){
                    $allowedActions['default']=$allowedActions[$action];
                    $allowedActions['default']['name'] = $action;
                }

			}
...
Рейтинг: 0 / 0
Помогите устранить ошибку preg_replace(): The /e modifier is deprecated
    #39141021
SQLWalker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hett,

Только сейчас прочитал Ваш ответ. Да, вижу - пропустил закрывающую скобку. Работает. СПАСИБО!
С Наступающим!
...
Рейтинг: 0 / 0
Помогите устранить ошибку preg_replace(): The /e modifier is deprecated
    #39141080
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно какую-нибудь нормальную IDE, она бы показала вам эту ошибку сразу.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите устранить ошибку preg_replace(): The /e modifier is deprecated
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]