Новости
(PHP 3> = 3.0.9, PHP 4)
preg_replace - виконує пошук і заміну регулярного виразу.
mixed preg_replace (mixed pattern, mixed replacement, mixed subject [, int limit])
Шукає в subject збіги з pattern і заміщає їх replacement. Якщо limit специфікований, то заміщуються тільки limit збігів; якщо limit опущений або дорівнює -1, заміщуються всі збіги.
Replacement може містити посилання в формі \\ n або (починаючи з PHP 4.0.4) $ n, де остання форма краще. Кожне таке посилання заміщається текстом, захопленим n 'ним патерном в дужках. n може бути від 0 до 99, а \\ 0 або $ 0 посилаються на текст, який співпав з усім патерном. Відкривають дужки підраховуються зліва направо (починаючи з 1) для отримання кількості захоплюючих субпатернов.
Якщо збіги знайдені, повертається новий subject, інакше subject повертається без змін.
Кожен параметр preg_replace () може бути масивом.
Якщо subject це масив, то пошук і заміна виконуються в кожному входженні subject, return-значення також буде масивом.
Якщо pattern і replacement є масивами, то preg_replace () приймає значення з кожного масиву і використовує їх для виконання пошуку і заміни в subject. Якщо replacement має менше значень, ніж pattern, то для решти значень для заміни використовується порожній рядок. Якщо pattern це масив, а replacement це рядок, то ця заміщає рядок використовується для кожного значення pattern. Зворотне не матиме сенсу.
Модифікатор / e робить так, що preg_replace () розглядає параметр replacement як PHP-код після виконання відповідної заміни посилань. Підказка: переконайтеся, що replacement утворює рядок правильного PHP-коду, інакше PHP повідомить про помилку розбору в рядку з preg_replace ().
Приклад 1. Заміна різних значень
$ Patterns = array ( "/ (19 | 20) (\ d {2}) - (\ d {1,2}) - (\ d {1,2}) /", "/ ^ \ s * {( \ w +)} \ s * = / "); $ Replace = array ( "\\ 3 / \\ 4 / \\ 1 \\ 2", "$ \\ 1 ="); print preg_replace ($ patterns, $ replace, "{startDate} = 1999-5-27");Цей приклад дасть:
Приклад 2. Використання модифікатора / e
preg_replace ( "/ (<\ /?) (\ w +) ([^>] *>) / e", " '\\ 1'.strtoupper (' \\ 2 ').' \\ 3 '", $ html_body);Це переведе в верхній регістр все теги HTMLв тексті введення.
Приклад 3. Конвертація HTML в текст
// $ document повинен містити HTML-документ. // Тут будуть видалені теги HTML, розділи javascript // і порожній простір. Також деякі звичайні елементи // HTML конвертуються в їх текстові еквіваленти. $ Search = array ( " '<script [^>] *?>. *? </ Script>' si", // Вирізається javascript " '<[\ / \!] *? [^ <>] *?> 'si ", // Вирізаються html-теги"' ([\ r \ n]) [\ s] + ' ", // Вирізається порожній простір"' & (quot | # 34); 'i ", // заміщає html-елементи " '& (amp | # 38);' i", " '& (lt | # 60);' i", " '& (gt | # 62);' i", " '& (nbsp | # 160); 'i ","' & (iexcl | # 161); 'i ","' & (cent | # 162); 'i ","' & (pound | # 163); 'i " , " '& (copy | # 169);' i", " '& # (\ d +);' e"); // обчислюється як php $ replace = array ( "", "", "\\ 1", "\" "," & "," < ","> "," ", chr (161), chr (162 ), chr (163), chr (169), "chr (\\ 1)"); $ text = preg_replace ($ search, $ replace, $ document);Примітка: параметр limit був введений після PHP 4.0.1pl2.
Див. також preg_match () , preg_match_all () і preg_split () .
Lt;\ /?Quot; '<script [^>] *?
Lt;>] *?