[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Замена eregi_replace на preg_replace()
novit
Здравствуйте.
После перехода хостера на Php 5.3.28 на сайте появилась ошибка:
Deprecated: Function eregi_replace() is deprecated in functions.php on line 259

В поисках решения нашёл: eregi_replace() (следует использовать preg_replace() с модификатором ‘i’ )
Прочитал много, но понял мало, пробовал много вариантов замены, но либо появляются новые ошибки, либо сайт не открывается вообще.

Вот сам изначальный код:
foreach($bbcodes as $bbcode => $bbcodehtml)
{ $text = eregi_replace($bbcode,$bbcodehtml,$text); }

Пожалуйста, помогите правильно сделать замену.

zelenuy
novit
Примерно так
<?php
header("Content-Type: text/html; charset=utf-8");
$file = "Привет Вася!";
$res = preg_replace('|(Привет)|iu', 'Досвидание', $file);
echo $res;
?>
BaNru
eregi_replace($bbcode,$bbcodehtml,$text);

Ну как ты верно заметил, тут просто надо заменить на
preg_replace($bbcode,$bbcodehtml,$text);

Затем надо будет искать откуда растут ноги $bbcode
В это переменной та самая регулярка, которой надо добавить модификатор i.

Другие ошибки могут лезть не из-за этого. Ты бы показал их.
zelenuy
novit
Я не каких тут ошибок не заметил, у вас может регулярное выражение не правильное
<?php
header("Content-Type: text/html; charset=utf-8");
$text = 'Вася';
$bbcodes['|вася|iu'] = 'Петя';
foreach($bbcodes as $bbcode => $bbcodehtml){
$text = preg_replace($bbcode,$bbcodehtml,$text);
}
echo($text);
?>

Цитата
Deprecated: Function eregi_replace() is deprecated in functions.php on line 259

Это говорит о том, что эта функция объявлена мусором и в следующих версиях возможно будет выброшена на свалку)
novit
Всем, огромная благодарность, за то, что не оставили мою просьбу без внимания.
Только я ещё больше запутался, всё написанное мне не понятно, т.к. отсутствует должное образование.
Извините, за отнятое у вас время, не думал, что всё так сложно.
С благодарностью.
BaNru
Что сложного, чего не понятного?
Спрашивай - ответим.
Invis1ble
$text = preg_replace('#' . preg_quote($bbcode, '#') . '#si', $bbcodehtml, $text);

как-то так

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

BaNru
Invis1ble, а не поломаешь ли ты старую регулярку таким методом?
В $bbcode уже записано regexp с разделителями и возможно модификаторами.
Invis1ble
Цитата (BaNru @ 11.03.2014 - 00:34)
Invis1ble, а не поломаешь ли ты старую регулярку таким методом?
В $bbcode уже записано regexp с разделителями и возможно модификаторами.

Там скорее всего обычная строка с пробелами по краям. Если нет, то поломается, да.
+ у ereg* нет модификаторов

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

novit
Цитата (Invis1ble @ 11.03.2014 - 01:37)
$text = preg_replace('#' . preg_quote($bbcode, '#') . '#si', $bbcodehtml, $text);

как-то так

Invis1ble
Всё заработало!!!
Огромная благодарность Вам и всем, кто принял участие в решении моей проблемы.
Invis1ble
novit
если мой вариант работает корректно, то регулярки тут вообще не нужны и оптимальней заменить на str_ireplace()

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

BaNru
Цитата
Там скорее всего обычная строка с пробелами по краям. Если нет, то поломается, да.

Я боюсь он потом словит багу, когда поймет что у него BBCode не работают.
ББкоды в 99% случаем используются регулярку
Цитата
+ у ereg* нет модификаторов

Не знал и знать не стоит biggrin.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.