Проправьте код, пожалуйста... Одну строку

12
Valeriy
На сайте с 19.04.2007
Offline
110
753

Новая РНР на сервере, и выскакивает ошибка по функции.

Короче, вот строка

if(eregi(".$ext", $file)) {

Как мне раньше подсказали, меняю ее вот так

if (strpos($file, ".$ext")!==false) {

Но я полный ноль в РНР, и что-то не то делаю. В результате все работает, но в админке пропадает выбор трех вещей: темплейтов, скинов управления и языка.

И все летит к черту. Приходится вручную править файл конфигурации.

eN_Slon
На сайте с 13.02.2007
Offline
159
#1

Valeriy, точно и не скажешь.

Дам другой совет - используйте strrpos вместо strpos

Парсинг, граббинг, автоматизация всего что вы можете сделать в браузере(и не только) сами. Любое кол-во, любые защиты.
ОД
На сайте с 06.07.2010
Offline
28
#2

Попробуйте

if (stripos($file, ".$ext")!==false) {

у вас кажется `i` пропущена

Пишу PHP скрипты на заказ (дешево)
eN_Slon
На сайте с 13.02.2007
Offline
159
#3

Олег_Дорожко, не путайте человека.

Валерий, а какая ошибка то выскакивает?

gormarket
На сайте с 29.12.2010
Offline
47
#4

Valeriy, попробуйте такой вариант строки:


if(preg_match('#\.'.$ext.'#i', $file)) {

а если я правильно понял, и в $ext находится расширение имени файла, то так


if(preg_match('#\.'.$ext.'$#i', $file)) {
Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
ОД
На сайте с 06.07.2010
Offline
28
#5

Я не путаю. Ошибка у человека выскакивает вот какая:


С версии PHP 5.3.0, расширение regex помечено устаревшим и заменено расширением PCRE. Вызов этой функции повлечет ошибку уровня E_DEPRECATED. Смотрите список отличий для помощи при конвертировании в PCRE.
Valeriy
На сайте с 19.04.2007
Offline
110
#6
eN_Slon:
а какая ошибка то выскакивает?

Не ошибка - в админке исчезает выбор скина, языка и темплейтов. В итоге, если сделать изменения какие и сохранить, потом сайт лежит и выскакивает ошибка, что отсутствует файл темплейта, например

Template Z:\home\test1.ru\www/templates//news.short.tpl does not exist!

То есть, не указана в конфигурационном файле папка "default"

ОД
На сайте с 06.07.2010
Offline
28
#7

eregi это case insensitive regular expression match

stripos это тоже самое, но работает в PHP5

Вот только, не в одном месте, вероятно, нужно менять. И очень даже возможно, что не одну eregi, а все, которые deprecated

Ибо если использовали такую, то и на другие deprecated внимания не обращали при написании. Весьма вероятно.

Мда... плохое юзабилити у кода получилось...

Valeriy
На сайте с 19.04.2007
Offline
110
#8

Олег_Дорожко, нет, не помогло...

gormarket, тоже нет

Valeriy добавил 25.10.2011 в 12:11

Олег_Дорожко:
Вот только, не в одном месте, вероятно, нужно менять.

Да, эту функцию я сменил ранее в другом файле

if (strpos($id, "[")!==false) {

вместо

if (eregi("\[", $id)) {

как мне подсказывали раньше в теме. Все работает...

А с этой чертовкой...

ОД
На сайте с 06.07.2010
Offline
28
#9

Мне офлайн надо. Через час-полтора буду, если никто не исправит до того времени, то посмотрю код.

Пока вам надо откат сделать, вернуться в то состояние, в котором ошибка начала появляться т.е. до того, как вы сделали какие-то исправления в коде

Вам везде нужно поставить stripos

Valeriy
На сайте с 19.04.2007
Offline
110
#10
eN_Slon:
используйте strrpos вместо strpos

не помогло.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий