ereg
ereg - Шукає збіги з регулярним виразом
Опис:
int ereg(string zrazok, string string, array [zbig]);
У рядку string шукає збіги з регулярним виразом, указаним у zrazok.
Пошук чутливий до регістру.
Функція повертає true, якщо у рядку string найдений збіг із zrazok, чи false, якщо збігу не було чи виникла помилка.
Якщо частини регулярного виразу взяти у дужки та викликати функцію з третім параметром regs, то збіги з частинами виразу збережуться у елементах масиву regs.
У $zbig[0] буде частина рядка string, що збіглася з усім виразом.
У $zbig[1] буде збіг із частиною виразу,що починається з першої лівої дужки;
У $zbig[2] буде збіг із частиною виразу,що починається з другої лівої дужки та т.д.
Якщо збігу з усім виразом не відбулося, то зміст $regs не зміниться.
Наприклад, якщо
ereg("1(23(45)67)8(9)ab", "zzz123456789abzzz", $zbig);
то
zbig[0] = 123456789ab
zbig[1] = 234567
zbig[2] = 45
zbig[3] = 9
zbig[4] =
Якщо у рядку декілька рядочків збігається з регулярним виразом, то функція задовольниться першим збігом зліва.
Наступний код відшукує дату у ISO форматі та покаже її у форматі ДД.ММ.РРРР:
$date = "дата є 2001-03-04";
if ( ereg( "([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs ) ) {
echo "$regs[3].$regs[2].$regs[1]";
} else {
echo "Нема дати за зразком РРРР-ММ-ДД у рядку: $date";
}
Ще приклади:
ereg("abc",$string);
/* Поверне true, якщо "abc" є у $string. */
ereg("^abc",$string);
/* Поверне true, якщо "abc" стоїть на початку рядка $string. */
ereg("abc$",$string);
/* Поверне true, якщо "abc" стоїть у кінці рядка $string. */
ereg("([[:alnum:]]+) ([[:alnum:]]+) ([[:alnum:]]+)", $string, $regs);
/* Розмістить у $regs[1], $regs[2] та $regs[3] три слова, які відокремлені пробілом. */
Приклади регулярних виразів:
Перевірить правильність email адреси, наприклад, abc.def.user@eee.ghi.host.com:
[a-z0-9_-]+(\.[a-z0-9_-]+)*@[a-z0-9_-]+(\.[a-z0-9_-]+)+
Перевірить правильність email адреси з іменем, наприклад, "Joe Doe"
:
(\"?[a-zA-Z]+\"?[ \t]*)+\<[a-z0-9_-]+(\.[a-z0-9_-]+)*@[a-z0-9_-]+(\.[a-z0-9_-]+)+\>
Перевірить правильність протоколу, наприклад, htpp://, ftp:// or https://
[a-z]+://
Перевірить правильність числа з крапкою, наприклад, 1.2 та 0.5:
-?[0-9]+\.[0-9]+
Також див.: ereg_replace
ereg_replace - заміняє рядочки, що збігаються з регулярним виразом
Опис:
string ereg_replace(string zrazok, string zamina, string string);
Ця функція відшукує у рядку string збіги з регулярним виразом zrazok та міняє ці збіги на zamina. Функція повертає змінений рядок string. (Тобто поверне первісний рядок, якщо не було збігів).
Наприклад:
$zrazok ="[чЧ][оО][рР][тТ]";
$zamina = "янгол";
$bulo = "Де його чорти взяли";
echo "було: $bulo <br>";
$nove = ereg_replace($zrazok, $zamina, $bulo);
echo "нове: $nove <br>";
Оглядач покаже:
було: Де його чорти взяли
нове: Де його янголи взяли
Якщо zrazok містить рядочки у дужках, то zamina може містити рядочки виду \\цифра. Замість цих рядочків функція підставить текст, що збігся з виразом у дужках. \\0 підставить увесь збіг зі zrazok.
Наприклад:
$zrazok ="(кращий)";
$zamina = "\\0 най\\1";
$bulo = "Він кращий";
echo "було: $bulo <br>";
$nove = ereg_replace($zrazok, $zamina, $bulo);
echo "нове: $nove <br>";
Оглядач покаже:
було: Він кращий
нове: Він кращий найкращий
Можна використовувати до 9 рядочків із дужками.
Якщо дужки вкладені, то їх номер рахують за відкривними дужками.
Цей код можна використовувати у програмі, що допоможе повернути справжнє значення слів у великих текстах, написаних ще тоді, коли українців називали русичами.
$str_from_file = "Севастополь - город русской славы";
$zrazok ="(.*)( русской )(.*)";
$zamina = "\\1 украинской \\3";
$bulo = $str_from_file;
echo "було: $bulo <br>";
$nove = ereg_replace($zrazok, $zamina, $bulo);
echo "нове: $nove <br>";
Оглядач покаже:
було: Севастополь - город русской славы
нове: Севастополь - город украинской славы
Ще приклади:
$string = ereg_replace("^","<BR>,$string);
/* Вставить вказівку <BR> на початку рядка. */
$string = ereg_replace("$","<BR>",$string);
/* Вставить вказівку <BR> у кінці рядка. */
$string = ereg_replace("\n","",$string);
/* Вилучить символ повернення каретки у рядку $string. */
Також див.: