- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте.
Тестирую один скрипт, при попытке установки выдает ошибку:
Parse error: syntax error, unexpected T_FUNCTION in /home/site/public_html/drt/libs/html1.php on line 147
Смотрю в скрипте строку 147, к ней есть пояснение:
Redwine: As of PHP 5.5.0, the preg_replace() emitts an error E_DEPRECATED level when passing in the "\e" modifier
As of PHP 7.0.0 E_WARNING is emited in this case and "\e" modifier has no effect.
Поясните, что значить такой комментарий? Версия PHP у меня старая?
/e нужно убирать из функции. Её больше нельзя использовать.
https://www.google.ru/search?client=opera&q=the+preg_replace()+emitts+an+error+E_DEPRECATED+level+when+passing+in+the&sourceid=opera&ie=UTF-8&oe=UTF-8
/e нужно убирать из функции. Её больше нельзя использовать.
Что-то еще больше запутался :)
У меня PHP 5.2.17 получается мне нужно убрать /e из функции или использовать PHP 7.0.0 правильно?
Вот функция, какую /e нужно убрать? :)
Или я что-то неправильно понял?
function sanitize($var, $santype = 1, $allowable_tags = ''){
if ($santype == 1) {
return strip_tags($var, $allowable_tags = '');
}
elseif ($santype == 2) {
return htmlentities(strip_tags($var, $allowable_tags),ENT_QUOTES,'UTF-8');
}
elseif ($santype == 3) {
return addslashes(strip_tags($var, $allowable_tags));
}
elseif ($santype == 4) {
/*** Redwine: As of PHP 5.5.0, the preg_replace() emitts an error E_DEPRECATED level when passing in the "\e" modifier
As of PHP 7.0.0 E_WARNING is emited in this case and "\e" modifier has no effect.
***/
//return stripslashes(preg_replace('/<([^>]+)>/es', "'<'.sanitize('\\1',5).'>'",strip_tags($var, $allowable_tags)));
// Substituting preg_replace with preg_replace_callback
return stripslashes(preg_replace_callback('/<([^>]+)>/is',
function($m) {
return '<'.sanitize($m[1],5).'>';
}, strip_tags($var, $allowable_tags)));
}
elseif ($santype == 5) {
/*** Redwine: As of PHP 5.5.0, the preg_replace() emitts an error E_DEPRECATED level when passing in the "\e" modifier
As of PHP 7.0.0 E_WARNING is emited in this case and "\e" modifier has no effect.
***/
//return preg_replace('/\son\w+\s*=/is','',$var);
// Substituting preg_replace with preg_replace_callback
return preg_replace_callback('/\son\w+\s*=/is',
function($m) {
return '';
},$var);
}
}
/e нужно убирать из функции. Её больше нельзя использовать.
https://www.google.ru/search?client=opera&q=the+preg_replace()+emitts+an+error+E_DEPRECATED+level+when+passing+in+the&sourceid=opera&ie=UTF-8&oe=UTF-8
Выбрасывает ошибку "syntax error" а не E_DEPRECATED потому что анонимные функции появились начиная с версии 5.3
ТС, 5.5 хотябы поставьте.
У меня PHP 5.2.17 получается мне нужно убрать /e из функции или использовать PHP 7.0.0 правильно?
Вот как будет PHP7, так и перестанет работать эта функция. А в PHP5 она нормально работает. Просто она небезопасная, потому и надо от неё уходить. И всё это не имеет отношения к "unexpected T_FUNCTION".
Ага, пока писал, уже опередили...
Собственно, ошибка и появляется из-за того, что эту функцию уже заменили, как отмечено выше.
---------- Добавлено 27.12.2016 в 22:42 ----------
rereg, я чё-то не въехал, Вы предлагаете этот кусок выкинуть без всякой замены?
На мой взгляд, более корректно либо перейти , как Вы предлагаете, на более высокую версию PHP, либо расписать именованную колбэк функцию.
Sitealert, я раскомментировал аналог return preg_replace с e модификатором который будет работать в 5.2, а return preg_replace_callback с анонимной функцией наоборот закомментировал.
Миль пардон, раскомментирование не заметил. Потому как форумские программеры никак не хотят нормальный пэхапэ код с подсветкой сделать.
Выбрасывает ошибку "syntax error" а не E_DEPRECATED потому что анонимные функции появились начиная с версии 5.3
Большое спасибо, все заработало :)
Вернее до следующего шага :)
Думаю самым правильным будет обновить PHP
Всем спасибо за помощь.