Ereg php 7 чем заменить
Ereg php 7 чем заменить
Теперь, разработчики в срочном порядке исправляют свой код, заменяя функции ereg, eregi, ereg_replace, ereg_replacei соответствующими PCRE аналогами, благо, замена получилась довольно простой:
комментарии:
классный у тебя сайт)))
Спасибо, вы очень мне помогли! 🙂
Спасибо. Для меня, как ничего не понимающего в php, здорово помогло.))))
Спасибо! Предельно ясно написано!
Подскажите пожалуйста, переписываю скрипт с этими изменениями и выскакивает ошибка.
Прежняя строка выглядела так:
Новая строка, в соответствии с тем, что Вы написали стала такой:
Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in W:\home\test1.ru\www\shop\core\common-admin.php on line 117
Что делать? Помогите, пожалуйста.
>Подскажите пожалуйста, переписываю скрипт с этими изменениями и выскакивает ошибка.
Думаю, должно быть что то вроде:
if (strpos($aFile[$i],$sVariable.»[‘».$sKey.»‘]»)!==false && strpos($aFile[$i], ‘=’)!==false )<
Спасибо огромное! Помогло!
Я бы сделал вот так:
Спасибо, помогло. Ещё ссылка по теме: http://www.pcre.ru
помогите переделать код пожалуйста
Ирек Минигулович: Ну согласно описанному выше строчка с eregi будет выглядеть как:
Привет!
меня тоже интересует эта история с разделителями.
С eregi() это работало:
для preg_match() что исправить?
я не тестировал но если тот вариант что вы прислали правильный по-моему должен вполне сработать следующий код:
К сожалению этот код не работает 🙁 Любые ссылки не замечает вообще. Сообщения с любыми ссылками добавляются.
С уважением, Марина
А вот такое чудо что означает? ereg(«[$d$q\n\r]») и на что его можно заменить?
Очень странно, что регулярное вырожение взято в [] если нужно проверить, что строки кончаются определенным окончанием то [] тут не нужны, [] означают любой символ из множества данных, но я сильно сомневаюсь, что в тексте множно поменять местами \n и \r (всегда забываю что идет в начале, но порядок важен).
Да, забыл совсем, что в двойные кавычки можно вставлять значения переменных. Полный текст выглядит так:
А, понятно, это для генерации csv файлов, тогда preg_match(«/ [$d$q\n\r] /») это определенно то что нужно.
И все равно.
Я не знаю как и чем думали создатели новых версий PHP но элементарный тест
Т.е. попытка проверить соответствие строки $str регулярному выражению [a-z0-9]
хорошо
Array ( [0] => 123 )
да нет ребята это все плохо это все ОЧЕНЬ! плохо оно его пропустило и мало того оно сделало выборку только цифр когда как ereg никогда бы себе такого НЕ ПОЗВОЛИЛ.
И preg_match возвращает FALSE в случае, если во время выполнения возникли какие-либо ошибки.
так чем заменить ereg?!
Исправьте версию PHP у Вас опечтка
т.е. в данном случае строка с русскими буквами со знаками пунктуации и с заглавными латинскими, не должна срабатывать а она срабатывает должна печатать. плохо. а она печатает хорошо.
Ох уж этот вордпресс, в коде представленном выше вообще не нужны регулярные выражения, достаточно поска подстроки в строке, вот по идее что должно быть:
Спасибо за помощь, обратился за помощю на форум, вопрос успешно решен http://bit.ly/Pj2p5W
Чудо вражеской техники заработало.
Deprecated: Function eregi() is deprecated in /var/www/dombtz12880/data/www/dombt.zp.ua/includes/classes/class.phpmailer.php on line 592
Warning: fsockopen() [function.fsockopen]: unable to connect to smtp.server.com:25 (Connection refused) in /var/www/dombtz12880/data/www/dombt.zp.ua/includes/classes/class.smtp.php on line 122
Warning: fsockopen() [function.fsockopen]: unable to connect to smtp.server.com:25 (Connection refused) in /var/www/dombtz12880/data/www/dombt.zp.ua/includes/classes/class.smtp.php on line 122
Hi!
Помоги переписать код и ответ выложить на твой блог!
ОШИБКА preg_match(): Delimiter must not be alphanumeric or backslash
В ощем спасибр заработало!
Но хочеца знать как запретить в штацесс новые функции пшп 5,5.заблокировать errors или отключить eregi.
был способ но я немогу его найти.
Подскажите пожалуйста, как исправить
классный сайт, но к сожалению не все понимаю в програмировании
Юрий, попробуй вот так, трудно сказать что либо определенное не зная значений констант, но думаю должно сработать:
что-то не сработало:( контент перестал показываться даже
вроде сработало. спасибо огромное, ошибку не выает:)
Подскажите, плз, как исправить код?
Вик, у меня получилась такая версия (у тебя лишние слеши в коде):
Не могу правильно поменять:
$patt=»($this->block_start_word|$this->block_end_word)[[:blank:]]*([0-9a-zA-Z\_]+)[[:blank:]]*$this->block_end_delim(.*)»;
if (eregi($patt,$v,$res)) <.
Заранее спасибо за быстрый ответ.
Владислав, а что так не срабатывает?:
$patt=»/($this->block_start_word|$this->block_end_word)[[:blank:]]*([0-9a-zA-Z\_]+)[[:blank:]]*$this->block_end_delim(.*)/i»;
if (preg_match($patt,$v,$res)) <.
Не разбираюсь в програмировании помогите пожалуйста:
Deprecated: Function eregi() is deprecated in /home/длинный путь/includes/init.php on line 60
Deprecated: Function eregi() is deprecated in /home/длинный путь/includes/init.php on line 64
Deprecated: Function eregi() is deprecated in /home/длинный путь/includes/init.php on line 68
Deprecated: Function eregi() is deprecated in /home/длинный путь/includes/init.php on line 72
Deprecated: Function eregi() is deprecated in /home/длинный путь/includes/init.php on line 75
Deprecated: Function eregi() is deprecated in /home/длинный путь/includes/init.php on line 78
Deprecated: Function eregi() is deprecated in /home/длинный путь/includes/init.php on line 81
Deprecated: Function eregi() is deprecated in /home/длинный путь/includes/init.php on line 84
Deprecated: Function eregi() is deprecated in /home/длинный путь/includes/init.php on line 87
Подскажите, пожалуйста, а как быть с такой строкой
Замена функции ereg_replace(). Подскажите самый быстрый вариант.
lamerz
Новичок
Замена функции ereg_replace(). Подскажите самый быстрый вариант.
Есть старый скрипт в котором присутствует много конструкций типа
Вурдалак
I’d like to model your domain
Можно посоветовать preg_replace(). Или даже preg_match().
С другой стороны — откуда эти теги?
HraKK
Мудак
Вурдалак
I’d like to model your domain
lamerz
Новичок
Автор оригинала: Вурдалак
Можно посоветовать preg_replace(). Или даже preg_match().
С другой стороны — откуда эти теги?
Теги будут браться с программы которая слушает определенный порт и отдает плэин текст.
Спасибо за советы
Решил провести тесты. возможно кому-то интересно будет
Для подсчета юзал функцию microtime(1);
а html page это html страничка.
/* 1 string
* Started at 1268165226.6797 ended at 1268165226.6798
* Started at 1268165233.9606 ended at 1268165233.9606
* Started at 1268165242.018 ended at 1268165242.018
* Started at 1268165247.7993 ended at 1268165247.7993
* Started at 1268165253.8756 ended at 1268165253.8756
* Started at 1268165260.4907 ended at 1268165260.4907
* html page
* Started at 1268165926.9691 ended at 1268165926.9691
* Started at 1268165937.5984 ended at 1268165937.5984
*/
тестировалось на нагрузке в 50%
Linux linux-0fiy 2.6.31.12-0.1-desktop #1 SMP PREEMPT 2010-01-27 08:20:11 +0100 i686 i686 i386 GNU/Linux
забавно.. думал preg_replace() будет работать медленнее чем explode()
буду юзать preg_replace() или substr()
как видите ereg_replace() вообще «стоит и курит в сторонке».. не думал, что будет такая значительная разница. нужно поскорее переписывать скрипт
в общем все, что я хотел узнать я узнал.. тему можно закрывать.
Популярные примеры работы регулярных выражений в PHP
Вопросов по данной теме уйма. И я решил создать свою подборку регулярных выражений. Думаю многим поможет!
Примеры preg_replace PHP
1. Удаляем определённую ссылку в переменной text
2. Удаляем комментарии в переменной text
3. Удаляем спецсимволы
4. Удаляем всё, что между
5. Удаляем всё, что между
6. Удаляем конкретные символы из строки
7. Удаляем пробелы по бокам строки и обычные пробелы
8. Удаляем лишние переводы строк и переносы
9. Удаляем расширения в названиях файлов
10. Создаём функцию обработки текста
11. Найти содержимое определённого тега и вставить его в другие теги
13. Добавить или убрать текст в начале или конце переменной с текстом
14. Находим все http:// и заменяем на ссылки
15. Удаление GET-параметров из URL
16. Добавить тег br в начало или конец строк
17. Как конвертировать html в текст
18. Как разобрать email и сделать ссылку
Примеры preg_match PHP
1. проверка mail адреса на корректность
2. Найти mail адреса в тексте
3. Является ли переменная числом, длиной от 13 до 16 символов (проверка кредитной карты)
4. Проверка имени файла
5. Ищем в тексте мобильные телефоны РФ
6. Состоит ли строка только из букв, цифр и _, длиной от 8 до 20 символов:
7. Есть ли в строке идущие подряд символы, не менее 3-х символов подряд (типа абвгДДДеё, но не ааббаабб):
8. Поиск в разных частях строки конструкции:
9. Проверки на тип браузера. Возвращает true если browser = Netscape 2, 3 or MSIE 3.
Примеры ereg PHP
1. Проверка mail адреса в тексте
PHP 7.1: Обзор новых возможностей
Новая функциональность
Добавлен возвращаемый тип «void» (RFC)
Теперь функции и методы, которые не должны ничего возвращать, можно помечать возвращаемым типом void:
Возврат какого-то значения из метода/функции, который помечен как void, будет генерировать исключение уровня Fatal Error. Обратите внимание, что NULL значение не приравнивается к void (отсутствию значения), то есть возращать NULL нельзя.
Кстати, это не значит что $x = someNethod(); не вернет ничего. Как и прежде в $x будет значение NULL. Так же void нельзя использовать как тип к параметру.
Добавлен новый псевдо-тип: «iterable» (RFC)
Этот тип по сути объединяет примитивный тип array и интерфейс Traversable (а значит и его производные: Iterator, Generator, etc). Проблема возникла на почве того, что к примеру, foreach может работать с обоими типами, но функция с типом array не примет объект с интерфейсом Traversable и наоборот.
Так же в рамках этого RFC была добавлена новая функция is_iterable(), которая работает аналогично другим is_* функциям.
Появилась возможность разрешать null в типизированных и возвращаемых параметрах (Nullable RFC)
Обратите внимание, что использование «?» и значение null по умолчанию не одно и тоже что
Причем добавление «?» оставляет поведение обратно совместимым
Также важный момент по наследованию:
В наследнике можно делать «строже» возвращаемый тип (то есть запрещать nullable), а параметр наоборот расширять до nullable, НО не наоборот!
Добавлена возможность использовать отрицательное значение для смещения в строках (RFC)
Отрицательные значения так же стали разрешены в некоторых строковых функциях: strpos, stripos, substr_count, grapheme_strpos, grapheme_stripos, grapheme_extract, iconv_strpos, file_get_contents, mb_strimwidth, mb_ereg_search_setpos, mb_strpos, mb_stripos.
Везде это означает считать смещение с конца строки.
Разрешено использовать строковые ключи в конструкции list() (RFC)
Так же был добавлен короткий синтаксис для list (RFC).
Конвертация callable выражений в замыкание (RFC)
Вот наглядный пример применения:
Поддержка модификаторов видимости для констант класса (RFC)
Ловить исключения можно объединяя несколько типов исключений в один блок (RFC)
Выбросы ошибок уровня E_NOTICE and E_WARNING при арифметических операциях над строками содержащие не валидные числа (RFC)
Это довольно важное изменение, которое теоритически может сломать обратную совместимость приложения если используются свои error handlers для перехвата предупреждений.
Причем есть интересная особенность: пробел в начале строк “ 5” + “ 3” — не даст ошибок. А вот “5 ” + “3 ” — пробел в конце уже даст выдаст предупреждения.
Для обхода последствий неявного преобразования и выброса предупреждений можно явно указывать “cast” в нужный тип: (int)“5 ” + (int)“3 ” или подавлять все принудительно @(“5 ” + “3 ”).
Другие изменения и обратные несовместимости
Лично моё мнение про данный минорный релиз: все очень органично вписалось, именно этого и не хватало в большинстве своем в новом PHP 7.0 и данные изменения лишь подчеркивают и усиливают особенности 7.х ветки.
Рекомендую дождаться 7.1.1 и можно обновляться без страха, что-то сломать (если вы конечно уже перешли на 7.0).
Блог Новикова Богдана
Коллекция заметок web-программиста, пишем код, исследуем github, погружаемся в unix, life++
php7 изменения и производительность
Дата выхода php-7.0 все ближе и ближе. Планируемые даты релизов выглядят следующим образом:
Рассмотрим что будет из себя будет представлять новый релиз, и стоит ли переходить на php7 в будущем.
Изменения в ядре php7 (zend engine 3, phpng)
Из других преимуществ ядра можно отметить следующее:
Недостатки, или следствия изменений:
В данном релизе внесены значительные изменения в конструкций языка и расширения. Рассмотрим их по отдельности.
Изменения в расширениях
Все расширения были переработаны с учетом новой типизации, но изменения также коснулись и функций.
Итак, наиболее явные изменения:
Новые конструкции и изменения языка
В конструкции языка внесено множество изменений как уровня логики так и простых упрощений. Если говорить прямо, то компилятор php был полностью переписан и на данный момент использует AST для компиляции.
Наиболее очевидные изменения, того что «добавлено»:
То что будет «удалено» и более не поддерживается:
Добавлен оператор сравнения с null «??«. Он позволяет в некоторых случаях сделать код более читабельней, к примеру:
Добавлен оператор комбинированного сравнения » » (T_SPACESHIP). Его суть заключается в следующем:
Исключения (exception) на замену фатальным ошибкам (fatal error)
Отличная возможность отловить и обработать ошибочные ситуации, без краха логики уровня приложения.
Иерархия исключений, для обработки такого рода ошибок, выглядит следующим образом:
Существует возможность обрабатывать такие случаи:
Указание типа возвращаемого значения (return type declaration)
Также можно отметить, что:
Скалярные типы аргументов функции (scalar type hints)
Данная возможность позволяет указать в прототипе функции тип int, bool, string и другие. Тип null и resource не поддерживаются.
«строгий режим» работы с типами (stitict mode)
Интерпретатор позволяет регулировать «строгость» соответствия типов данных с помощью директивы declare(strict_types=1). Данная директива позволяет включать или выключать строгий режим типов.
Есть несколько особенностей ее использования:
Пример работы в обычном режиме:
Пример работы в «строгом режиме»:
Анонимные классы
Анонимные классы похожи на аналогичные в других языках и на существующие в php5 анонимные функции.
Изменения в интерпретации переменных
В новой версии интерпретация переменный стала следовать семантике left-to-right. Сравним некоторые случаи.
Изменения в некоторых языковых конструкциях
Изменено поведение list(), и именно:
Из приведения типов убрано привидение типов из строки «0xXXX» в число.
Убрана возможность повторной декларации переменных в прототипе функции:
Для именования классов, интерфейсов и примесей теперь нельзя использовать имена зарезервированных типов:
Изменено поведение побитовых операторов. Сдвиг int на количество битов большее разрядности int всегда будет возвращать 0.
Побитовый сдвиг на отрицательное число будет возвращать false и генерировать предупреждение.
Выводы
Проделанная разработчиками работа над php7 действительно огромная. Язык начинает приобретать новый, более изящный вид. Да, в этом релизе все еще существует оператор «goto» и наборы функций вроде «array_*», как и много других спорных моментов. Тем не менее, даже с учетом этого, прогресс есть :).
Как и другие major релизы, php7 ломает не мало зависимостей, но с другой стороны дает более совершенный инструмент для разработчика. По результатам тестов (синтетических и на реальных системах) мы получаем (имеются ввиду билд с HHVM):