Регулярні вирази в PHP .
PHP підтримує два стилю синтаксису регулярних виразів POSIX і Perl . Стиль POSIX вбудований в PHP за замовчуванням, а стиль Perl доступний після компіляції з бібліотекою PCRE .
В PHP для роботи з регулярними виразами PCRE використовуються кілька функцій.
php.net: preg_match припиняє свою роботу після першого знайденого збіги. Якщо необхідно знайти, або порахувати всі збіги, слід скористатися функцією preg_match_all.
int preg_match (string pattern, string subject [, array matches [, int flags]])
preg_match () повертає FALSE в разі, якщо під час виконання виникли будь-які помилки. У разі, якщо додатковий параметр matches вказаний, він буде заповнений результатами пошуку. Елемент $ matches [0] буде містити частину рядка, відповідну входженню всього шаблону, $ matches [1] - частина рядка, які відповідають першій подмаскі (то що знаходиться усередині шаблону).
- Приклад. В HTML тексті знаходиться одна таблиця. Її потрібно вирізати в двох варіантах, перший з тегами ($ matches [0]), друге тільки текст міститься між тегами ($ matches [1]). Нижче наведений приклад можна використовувати для обробки будь-яких тегів. <? Php / * * Обробка результату виведення утиліти ipcalc. Ключ -h дозволяє отримати результат в HTML. * / $ IPs = '10 .26.95.0 / 24 '; $ Escaped_IPs = 'ipcalc -h' .escapeshellcmd ($ IPs); $ Output = shell_exec ($ escaped_IPs); preg_match ( '| <table (. *) </ table> | Uis', $ output, $ matches); print_r ($ matches [0]); // результат з тегами <table> </ table>. Весь шаблон. print_r ($ matches [1]); // результат вміст тегів <table> </ table>. ?>
s (PCRE_DOTALL) Якщо даний модифікатор використовується, метасимвол "точка" в шаблоні відповідає всім символам, включаючи переклад рядків. Без нього - всім, за винятком переказів рядків. Цей модифікатор еквівалентний запису / s в Perl. Клас символів, побудований на запереченні, наприклад [^ a], завжди відповідає перекладу рядка, незалежно від наявності цього модифікатора.
- Витягуємо ім'я хоста і протокол з URL preg_match ( '@ ^ (?: Https?: //)? ([^ /] +) @I', $ usr1, $ matches); print_r ($ Matches [0]);
preg_match_all
int preg_match_all (string pattern, string subject, array matches [, int flags [, int offset]])
Функція працює також, як і preg_match, але шукає не тільки перше входження, а всі наявні і складає їх в масив matches, який для даної функції (на відміну від preg_match ()) є обов'язковим.
preg_replace - виконує пошук і заміну по регулярному виразу. Виконує пошук в рядку subject збігів з шаблоном pattern і замінює їх на replacement. У разі, якщо параметр limit вказано, буде проведена заміна limit входжень шаблону.
mixed preg_replace (mixed pattern, mixed replacement, mixed subject [, int limit])
- Приклад. Чистка прогалин. <? Php $ str = 'foo o'; echo $ str. "\ N"; $ Str = preg_replace ( '/ \ S \ s + /', '', $ str); echo $ str. "\ N"; ?>
- Приклад. Видалення всіх символів "-". <? Php $ str = '2012-04-05'; echo $ str. "\ N"; $ Str = preg_replace ( '/ - /', '', $ str); echo $ str. "\ N"; ?>
У PHP існує дві функції для пошуку рядків за допомогою регулярних виразів ereg () і eregi (). Єдина відмінність між ними функція eregi () нечутлива до регістру.
POSIX функції ereg () і eregi () оголошені застарілими (DEPRECATED). рекомендується використовувати PCRE сумісні функції. regexp_php.txt · Останні зміни: 2019/03/03 15:46 - darkfire
Lt;?Lt;?
N"; ?
Lt;?
N"; ?