Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Замена eregi_replace на preg_replace()
novit  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 3
Пользователь №: 39117
На форуме: 2 года, 8 месяцев, 23 дня
Карма:




Здравствуйте.
После перехода хостера на 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); }

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

PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
zelenuy  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 386
Пользователь №: 38774
На форуме: 2 года, 10 месяцев, 4 дня
Карма: 6




novit
Примерно так
<?php
header("Content-Type: text/html; charset=utf-8");
$file = "Привет Вася!";
$res = preg_replace('|(Привет)|iu', 'Досвидание', $file);
echo $res;
?>
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
BaNru  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Тварю
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 544
Пользователь №: 27722
На форуме: 5 лет, 6 месяцев, 28 дней
Карма: 33

Не курю:
3 года, 6 месяцев, 5 дней


eregi_replace($bbcode,$bbcodehtml,$text);

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

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

Другие ошибки могут лезть не из-за этого. Ты бы показал их.
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
zelenuy  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 386
Пользователь №: 38774
На форуме: 2 года, 10 месяцев, 4 дня
Карма: 6




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

Это говорит о том, что эта функция объявлена мусором и в следующих версиях возможно будет выброшена на свалку)
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
novit  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 3
Пользователь №: 39117
На форуме: 2 года, 8 месяцев, 23 дня
Карма:




Всем, огромная благодарность, за то, что не оставили мою просьбу без внимания.
Только я ещё больше запутался, всё написанное мне не понятно, т.к. отсутствует должное образование.
Извините, за отнятое у вас время, не думал, что всё так сложно.
С благодарностью.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
BaNru  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Тварю
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 544
Пользователь №: 27722
На форуме: 5 лет, 6 месяцев, 28 дней
Карма: 33

Не курю:
3 года, 6 месяцев, 5 дней


Что сложного, чего не понятного?
Спрашивай - ответим.
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11783
Пользователь №: 23195
На форуме: 6 лет, 4 месяца, 10 дней
Карма: 428

Трезвый :
7 лет, 3 месяца, 10 дней


$text = preg_replace('#' . preg_quote($bbcode, '#') . '#si', $bbcodehtml, $text);

как-то так


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
BaNru  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Тварю
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 544
Пользователь №: 27722
На форуме: 5 лет, 6 месяцев, 28 дней
Карма: 33

Не курю:
3 года, 6 месяцев, 5 дней


Invis1ble, а не поломаешь ли ты старую регулярку таким методом?
В $bbcode уже записано regexp с разделителями и возможно модификаторами.
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11783
Пользователь №: 23195
На форуме: 6 лет, 4 месяца, 10 дней
Карма: 428

Трезвый :
7 лет, 3 месяца, 10 дней


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

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


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
novit  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 3
Пользователь №: 39117
На форуме: 2 года, 8 месяцев, 23 дня
Карма:




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

как-то так

Invis1ble
Всё заработало!!!
Огромная благодарность Вам и всем, кто принял участие в решении моей проблемы.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11783
Пользователь №: 23195
На форуме: 6 лет, 4 месяца, 10 дней
Карма: 428

Трезвый :
7 лет, 3 месяца, 10 дней


novit
если мой вариант работает корректно, то регулярки тут вообще не нужны и оптимальней заменить на str_ireplace()


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
BaNru  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Тварю
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 544
Пользователь №: 27722
На форуме: 5 лет, 6 месяцев, 28 дней
Карма: 33

Не курю:
3 года, 6 месяцев, 5 дней


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

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

Не знал и знать не стоит biggrin.gif
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса