Обновление PHP с 4 до 5 требует изменения ereg_replace() и ereg() с разделителями

При запуске бывших страниц PHP 4 в PHP5 я получаю устаревшие ошибки: я знаю, что там есть некоторые обратные косые черты. (или это косая черта?), но элемент «+» для замены сбивает меня с толку.

Функция ereg_replace() устарела:

$perms = ereg_replace(" +", "&", @trim($tmp[0]));

Теперь этот ниже действительно согнул мой разум. Только изнашивая клавиши G-O-O-G-L-E на клавиатуре, я рискнул и просто вставил какой-то код. Я решил ответить на этот вопрос в надежде помочь кому-то столь же сложному, как я. Что, черт возьми, такое «функция обратного вызова»? Я знаю, я, вероятно, использую этот материал весь день на других языках программирования. Ну что ж. Я думаю, что мой уровень беспокойства перекрыл мой правильный выбор форума, чтобы ответить на мои простые вопросы новичка.

preg_replace(): модификатор /e устарел, используйте вместо него preg_replace_callback:

$string = preg_replace("/&#([0-9]+)/e","chr('\\1')",$string);

Моя путаница в других темах и ответах StackOverKnow заключается в том, что примеры слишком сложные. Я думаю, что кто-то (включая меня) мог бы извлечь выгоду из того, что кто-то просто набрал пример, исправленный в правильном синтаксисе. Я просто не так много живу вокруг этой темы, и из-за миллионов строк кода в этом RTF-генераторе, который мне нужно обновить, я боюсь "пружины!" эффект: я что-то меняю, и возникают каскадные проблемы, и я никогда не могу изменить это обратно.

Мы приобрели отличный генератор RTF для нашего клуба, чтобы создавать документы Word из наш PHP-список походов. Вот где я нахожу амортизированные ошибки. Просто скажу, что когда-нибудь вам может понадобиться документ Word, созданный на PHP. Трудно найти этот материал, и он хорошо работал в течение последних 9 лет.


person JustJohn    schedule 14.11.2015    source источник
comment
Возможный дубликат Как преобразовать выражения ereg в preg в PHP?   -  person Toto    schedule 15.11.2015


Ответы (1)


«+» сбивает с толку, потому что двойные кавычки и знак «плюс» заставили меня думать, что это часть функции, а не ввод.

$perms = ereg_replace(" +", "&", @trim($tmp[0]));

answer: preg_replace("/ +/", "&", @trim($tmp[0]));

Это заставило меня почесать голову о том, «какая функция? нет никакой функции!» пока я не нашел этот почти неясный пример и не выбрал среднее решение:

preg_replace(): модификатор /e устарел, используйте вместо него preg_replace_callback:

$string = preg_replace("/&#([0-9]+)/e","chr('\\1')",$string);

$string = preg_replace_callback("/&#([0-9]+)/", create_function ('$matches', 'return chr($matches[1]);'),$string);

Я обнаружил, что эта ссылка со сравнением устаревшего и замененного очень полезный.

person JustJohn    schedule 15.11.2015