What is php and ereg

Регулярные выражения в PHP

Регулярные выражения — черезвычайно мощный инструмент работы со строками. С их помощью можно проводить анализ и изменение строк на основе заданного шаблона.

Рассмотрим простые (далеко не все) правила формирования шаблона.

Шаблон состовляется из набора модификаторов, некоторые из которых приведены в нижеследующей таблице.

\ — Следующий символ является специальным. Так же применяется для указания символов, которые могут использоваться в качестве модификаторов. \n — соответствует символу перевода строки
\* — символ «*», а * — модификатор
^ — Маркер начала строки. ^abc — строка, начинающаяся с «abc».
$ — Маркер конца строки. abc$ — строка, заканчивающаяся на «abc».
* — Предыдущий символ встречается 0 или больше раз. Шаблону w* соответствуют строки what, buka, agwt
+ — Предыдущий символ встречается 1 или больше раз. Шаблону w+ соответствуют строки what, agwt.
Строка buka уже не соответствует.
? — Предыдущий символ встречается 0 или 1 раз. Шаблону w?r соответствуют строки ara, awra.
. — Соответствует любому символу, отличному от «\n».

Это простейшие модификаторы, знания которых нам пока хватит.

В PHP существует несколько функций для работы с регулярными выражениями: ereg(), ereg_replace(), eregi(), ereg_replacei() и split().

Функции с суффиксом i представляют из себя аналоги функций без этого суффикса, не чувствтительные к регистру операндов.

Рассмотрим функцию ereg(), синтаксис которой:

int ereg(string pattern, string string, array [regs]);

Рассмотрим некоторый адрес maxx@mail.ru. Очевидно, что правдоподобный адрес должен иметь вид «слово@слово.слово». В терминах шаблонов произвольный символ обозначается знаком «.» (мы не будем сейчас учитывать тот факт, что в адресах допустимы не все символы). В каждом слове должен быть по крайней мере один символ, таким образом, шаблон слова будет иметь вид «.+«. Вспомним теперь, что «.» — это модификатор, и для явного указания точки (в качестве символа) нужно писать «\.«.

Таким образом шаблон будет иметь вид «.+@.+\..+«.

Наша проверка будет иметь следующий вид:

Читайте также:  Python как сделать задержку

После такой проверки мы можем быть уверены, что e-mail адрес имеет вид «слово@слово.слово».

Источник

ereg

Ищет в строке string совпадения с регулярным выражением, заданным в pattern регистрозависимым образом.

С версии PHP 5.3.0 эта функция считается УСТАРЕВШЕЙ. Крайне не рекомендуется полагаться на эту возможность.

Список параметров

Регулярное выражение, чувствительное к регистру.

Если совпадения найдены для подстрок в скобках из pattern , и функция вызывается с третьим аргументом regs , совпадения будут сохранены в элементах массива regs .

$regs[1] будет содержать подстроку, которая начинается с первой левой круглой скобки; $regs[2] будет содержать подстроку, начинающуюся со второй, и т.д. $regs[0] будет содержать полную копию совпавшей строки.

Возвращаемые значения

Возвращает длину совпавшей строки, если совпадение c pattern найдено в string , или FALSE , если совпадений не было или возникла ошибка.

Если необязательный параметр regs не передан, или длина совпавшей строки равна 0, функция возвращает 1.

Список изменений

Версия Описание
4.1.0 Вплоть до (и включая) PHP 4.1.0 $regs будет заполняться точно десятью элементами, хотя реально может совпасть больше или меньше десяти подстрок в скобках. Это не влияет на способность ereg() совпадать с большим количеством подстрок. Если совпадения не найдены, $regs не будет изменен функцией ereg() .

Примеры

Пример #1 Пример использования ereg()

Следующий фрагмент кода принимает дату в формате ISO (YYYY-MM-DD) и печатает её в формате DD.MM.YYYY:

if ( ereg ( «(2)-(4)-(1)» , $date , $regs )) echo » $regs [ 3 ] . $regs [ 2 ] . $regs [ 1 ] » ;
> else echo «Недопустимый формат даты: $date » ;
>
?>

Примечания

Замечание:

С версии PHP 5.3.0, расширение regex помечено устаревшим и заменено расширением PCRE. Вызов этой функции приведет к ошибке уровня E_DEPRECATED . Смотрите список отличий для помощи при конвертировании в PCRE.

Функция ereg() является устаревшей начиная с PHP 5.3.0. Предлагается использовать вместо неё функцию preg_match() .

Смотрите также

  • eregi() — Совпадение с регулярным выражением без учёта регистра
  • ereg_replace() — Осуществляет замену по регулярному выражению
  • eregi_replace() — Осуществляет замену по регулярному выражению без учета регистра
  • preg_match() — Выполняет проверку на соответствие регулярному выражению
  • strpos() — Возвращает позицию первого вхождения подстроки
  • strstr() — Находит первое вхождение подстроки
  • quotemeta() — Экранирует специальные символы
Читайте также:  Заголовок страницы

Источник

Easily Use Regular Expressions in Your PHP Scripts

PHP has two sets of regular expression functions: the ereg and preg functions. The preg functions support a modern full-featured regex syntax based on the PCRE library and are recommended for new code. Since PHP 7.3.0 they are based on PCRE2.

The ereg functions implement POSIX regular expressions which offer a limited syntax. The ereg functions are deprecated, but RegexBuddy still fully supports them so you can maintain existing code or convert your regular expressions from PHP’s ereg flavor to the preg flavor.

See How Easy Coding with Regexes Can Be

First, use RegexBuddy to define a regex or retrieve a regexp saved in a RegexBuddy library. Rely on RegexBuddy’s clear regex analysis, which is constantly updated as you build the pattern, rather than dealing with the cryptic regex syntax on your own. Detailed help on that syntax is always only a click away.

If you copied a regex written for another programming language, simply paste it into RegexBuddy, select the original language, and then convert the regex to the specific version of PHP and the set of functions you’re using. You can also convert from one version of PHP to another, and from the old ereg syntax to the modern preg syntax. If you’re writing a code library that needs to work with multiple versions of PHP, compare your regex between those PHP versions to make sure it will work exactly the same with all of them. RegexBuddy knows all the features and all the bugs in all versions of PCRE from 2003’s PHP 4.3.3 all the way to the latest PHP 8.1.12.

If you created a new regular expression, test and debug it in RegexBuddy before using it in your PHP source code. Test each regex in RegexBuddy’s safe sandbox without risking precious data. Quickly apply the regex to a wide variety of input and sample data, without having to produce that input through your script.

Читайте также:  Javascript function not global

Finally, let RegexBuddy generate a source code snippet that you can copy and paste directly into whichever IDE or PHP code editor you use. Just choose what you want to use the regex for, and a fully functional code snippet is ready. You can change the names of variables and parameters to suit your naming style or the current situation, which RegexBuddy automatically remembers.

Don’t bother trying to remember which methods to call or which parameters to pass. And don’t worry about properly escaping backslashes and quotes. Just tell RegexBuddy what you want to do, and you will get the proper PHP code straight away. Anything can be done: testing a string for a match, extracting search matches, validating input, search-and-replace, splitting a string, etc.

Let RegexBuddy Make Regex Easy for You


  • Discover how you can automate tedious tasks with regular expressions.
  • Find out how RegexBuddy makes the regex syntax crystal clear enabling you to use regular expressions with the greatest ease ever.
  • Watch videos in your web browser and see what RegexBuddy can do for you.
  • Take a look at the screen shots.
  • Buy RegexBuddy now and try it risk-free with our 3-month unconditional money-back guarantee.

“I bought a license of RegexBuddy about a month ago and totally love it! I’m a PHP developer and creating even complex regular expressions in RegexBuddy is a breeze.

“The software is really worth every penny—keep up the great work!”
— Fabian Schulz
10 April 2007, South Africa

“My hats are off to you guys! Your RegexBuddy is a GODSEND!

“I use this program probably 10 times per day when developing applications in PHP. It is great because it not only describes and outlines regexes, but teaches you along the way. Just wanted to drop you a line from this very satisfied customer!”
— Brandon Parise
29 Sept. 2004, South Carolina, USA

Источник

Оцените статью