Редовни изрази (PHP). PHP: регулярни изрази, примери

Колко голям и разнообразен е светът на информацията, толкова бързо, колкото се разширява и развива. Всяко решение е само момент в общия процес на движение. Знанието и опитът дават възможност да се разбере процесът на постигане на целта, но никога - не и резултатът от неговото постигане. Съмнително е, че в близко бъдеще изобщо можем да говорим за резултата, но е много важно процесът на стремеж към него да представлява съществен и обективно необходим процес. "Желанието и /или големите пари" не създават алгоритъм, който е способен на нещо естествено и "свободно" от човек, особено когато той не се замисля какво точно прави. Във всяка позиция на информационната задача има поне едно бяло петно, но след него, обикновено, веднага се виждат други чисти петна и не е необходимо всички те да са бели цветя.


Интернет технологиите значително опростиха достъпа до информация, но въпросът - как да се наложи на желаното желание - не е опростен, а е придобил нови “обеми работа”. И докато PHP пространствата за регулярни изрази очевидно не са изчерпани, те са значителна стъпка напред.

Прости функции + алгоритъм = шаблон

Предлагайки регулярни изрази, PHP по същество намалява съдържанието на алгоритъма, но обичайните функции за търсене и замяна и алгоритмите на обработка не са загубили своето значение. Новите идеи не сигнализират за информационната революция. Максимумът, на който може да се разчита, е компактният код и нарастването на способността на разработчика да формулира правилно заявката за търсене.
Трябва да се знае иприлагат редовни изрази в PHP. Убедителни примери и ефективни. Но трябва да се осъзнае, че с появата на нов механизъм за търсене центърът на тежестта се е преместил в шаблон - вид механизъм, въпреки че по същество замества множеството от прости функции за търсене, условия, цикли и други оператори.


Майка:
  • Качествено и модерно средство е добро;
  • Виждането и използването на колективен опит е важно;
  • съчетаването на реалната действителност и виртуалните идеи е гаранция за успех. Постигането на знание, тъй като е било необходимо да се разбере една задача, да я реши, често има по-голямо значение от конкретен резултат. Редовни фрази в PHP са представени от няколко функции в синтаксиса на езика и много полезни примери в интернет. Като се има предвид спецификата на синтаксиса на езика, опциите за използване са ограничени само от въображението на разработчика, но трябва да се има предвид, че не всички шаблони ще работят. Чрез PHP проверката на регулярните изрази е от съществено значение.

    Търсене на прости символи (редове)

    Символът не винаги е един байт и често символът, като елементарен сигнал, има точен смисъл в допълнение. Кодирането определя видими знаци в кода по различни начини. Символът може да има няколко опции: "$" = "USD" = ".e." - това е точно значение, че нещо друго, но не непременно близко, е свързано с валутата. Точният смисъл обаче може да бъде в променливата PHP, която винаги започва със символа "$", но не може да започва с "USD" и "in.".
    В програмите знакът може да бъде името на функция (низ) в контекст: за разпознаване и изпълнение - това е от динамичния домейнобектно-ориентирано програмиране, когато конструкции, функции, регулярни изрази се използват от PHP директно за вземане на решения. Намереният символ "се изпълнява", т.е. определя какво трябва да се направи на мястото, където е било намерено, и начинът, по който той "мисли", е необходим.
    Просто търсенето на символ /низ не е просто занятие, и колкото повече в символа на информацията, толкова по-добре. Не винаги трябва да намерите дузина най-добри цени на храните, да изберете вкусни рецепти за празнична торта или да решите с изпълнителя на окачения таван.
    Често е необходимо да се оптимизират прости алгоритми, а не проста информационна аритметика или в трудни условия, когато желаният характер трябва да бъде избран от базата данни и линията, в която трябва да бъде намерена - на стотици места. В този случай цената на символа е равна на времето на извадката от базата данни, а цената на къде да се търси - времето за търсене на известните стотици сайтове. Самотният символ не е фраза или няколко фрази, може да бъде навсякъде и да бъде произволно малък. Как да се определи какво точно е необходимо?

    Пример: търсене на цени

    Просто намирането на символа $ в текста не е достатъчно. Не винаги е достатъчно да се провери дали пред нея има фигура. Ако предскажете точка или цифра преди символа "$", това е гаранция, че цените, на които предхождат паричните символи, няма да бъдат взети под внимание. Ще има и пропуснати цени, които изобщо не посочват валута, но страницата има индикация за това.
    Като цяло решението на този проблем обикновено преувеличава алгоритъма до непризнаване и ще отнемемного време. Междувременно, като се използва редовен израз, броят на PHP няма да открие проблем. $ cContents = preg_match_all ("/[0-9] + ([$] | usd | ue | ue) {1} /i"; виж e-mail - 2usd; ";
    намирам e -mail - 2-ри ";
    " работна електронна поща - ye2; ";
    " проверка на електронната поща - $ 13 "; $ aResult;);
    . "; ". implode (',', $ aResult ). ''. Ще отговоря: "2; 2usd, 2u.e.", но няма да намери нищо в реда: "провери електронна поща - $ 13". Като предвидите в шаблона наличието на символ отпред или отзад, можете бързо да постигнете целта в по-голямата част от случаите. $ cContents = preg_match_all ("/([0-9] + ([$] | usd | ue | ue) {1}) | (([$] | usd | ue | ue) {1
    "потърсете електронна поща - 2usd;";
    "намери електронна поща - 2ou.";
    "работна електронна поща - ue2; ";
    " проверка на електронната поща - $ 13 "; $ aResult;);
    . "; ". implode (',', $ aResult ). ''.
    Резултат: "4; 2usd, 2u.e., ue2 $ 13".

    Независимо от логиката

    PHP предлага, подобно на други инструменти, PHP, но не е необходимо да ги прилага според неговите правила или да използва други низови функции в предвиден синтаксис. Преди да започнете търсене, преобразувайте желания в масив и мястото, където ще бъде направено търсенето, разделени на компоненти по предишния критерий. Една обикновена двойка функции експлодира () и implode () често опростява и ускорява решението.
    Например, в резултат на предишна работа, в района е формиран масив от редове (данни) за това колко картофи се събират във всяко село: името на селото и събраният обем се посочват, а ако има няколко предприятия в селото, то редът на масива отива Името на име и стойност през ";" и така на всички фирми. Изчислете общата сума, събрана в този случай няма да бъде възможна, но ако направите impode (";", $ aResult), ще има един дълъг ред, в който чифт -Името на домейна /името Име.Името - Събрано количество - ще бъде изброено чрез ";". След като направите обратен изстрел, взривявате (";", $ aResult) - масив от всички събрани и колко е събрал, след това, премахвайки всички нецифрени знаци от линиите, имаме само цифри, чиято сума ще бъде общият обем на събраните. В този пример, регулярните изрази в PHP ви позволяват да не изглеждате изобщо, те просто и достъпно извличат необходимите цифрови стойности. Бързо и ефективно, без значение колко дълго са имената на селата и предприятията. Това решение не е идеално, но показва, че не винаги е необходимо да се спазват правилата. Често можете да постигнете желания необичаен начин.

    Резюме от техническа страна, от кодиране

    Синтаксисът на алгоритъма не казва как изглежда. Но, осигурявайки едно и също кодиране на страницата, скрипта и низовете (които се търсят и в които се извършва търсенето), можете да се потопите в задачи извън техническата страна.
    Необходимо е не само да знаем какво да търсим, но и къде да го правим, кога, в какво количество, какво да променим и как. Формално редовни изрази на PHP се изпълняват като пълен, напълно функционален механизъм, но поради много причини изпълнението на аналозите му на различни езици е различно. Като общо правило, преди да се премести определен шаблон в един или друг набор от инструменти за решаване на конкретна задача, е необходимо да се направи качествена адаптация, да се извърши проверка на всички възможни варианти на изходните данни.
    Дори ако използвате собствения си опит в PHP, редовноизрази, примери, модели и дизайн изискват внимателно проучване. Функционалният език, синтаксисът и средата за изпълнение се променят динамично.

    Структура и съдържание на шаблона

    Това, което преди това е било написано под формата на комбинация от функции за търсене, условни оператори, заместване, вмъкване, изтриване, се състои от един ред символи с определени правила - модел на нормален израз. В действителност, значителна сума е кодирана по стриктно дефиниран начин и се изпълнява съгласно специфични правила. Точно както не можете да направите отстраняването на грешки на който и да е езиков оператор, не можете да направите дебъгването на шаблона на регулярния израз, този процес може да бъде само емулиран. Общото правило е вариантът: работи - не работи. Синтаксисът е много прост, въпреки че неговото възприятие, особено в началото на работата, е много трудно.

    Пример за прост израз

    В един прост вариант шаблонът съвпада с реда: $ cContents = preg_match ("/asdf /i", "asdf", $ aResult). "; ". implode (',', $ aResult). Резултатът ще бъде "1; asdf", тъй като функцията завършва работата си по първото съвпадение на съответстващия модел. Резултатът ще бъде същият, ако погледнете в реда "aaaasdf" и в реда "zzzasdfvvv". Ако зададете първия и /или последния знак, резултатът ще бъде недвусмислен: $ cContents = preg_match ("/^ asdf /i", "asdf", $ aResult). "; ". implode (',', $ aResult). '';
    $ cContents. = Preg_match ("/asdf $ /", "asdf", $ aResult). "; ". implode (',', $ aResult). ''. Резултатът ще бъде: 1; asdf1; ASDF. Символите "^" и "$" показват кой шаблон започва и завършва. Резултатът от функцията preg_match е броят на съвпаденията, той може да бъде 0 1 или false, ако е открита грешка. В третия параметър, масивът, единичният намерен елемент се поставя. В този случайс помощта на функцията preg_match_all () търсенето продължава до края на линията. $ cContents = preg_match ("/asdf /i", "asdf123asdf456asdf789", $ aResult). "; ". implode (',', $ aResult). '';
    $ cContents. = Preg_match_all ("/asdf /i", "asdf123asdf456asdf789", $ aResult). "; ". implode (',', $ aResult ). ''. Резултат: 1; asdf
    3; asdf, asdf, asdf. Ако не използвате специални инструкции, тогава всеки символ определя себе си и мястото си, независимо от кодирането на линията и кодирането на шаблони. Програмистът трябва да се увери, че кодирането на тези елементи е правилно един спрямо друг и кодиране на страницата.

    PHP функции за регулярни изрази

    Редовни изрази в PHP са низ от символи, написани по определен начин. Обикновено, по аналогия с други езици за програмиране, те се пишат с символи "/" "/" и се поставят в кавички, в зависимост от алгоритъма, можете да използвате единични и двойни. Основната функция на php preg match използва регулярни изрази като съвпадение на шаблона и спира, когато за първи път остане. Функцията за подмяна замества всеки намерен модел на съвпадение, той може да обработва масиви, което ви позволява да проектирате търсене и да извършите замяна на много опции. Интересни опции за работа с регулярни изрази могат да бъдат разработени с помощта на функцията preg_replace_callback, която не приема подлежащия на подмяна текст, както и името на функцията, която ще извърши замяната. В допълнение към практическата стойност е възможно да се приложат механизми за проверка на шаблони, които играят важна роля в разработването и изграждането на последните.

    Обхват на регулярните изрази

    ОтХипертекстовите езици представляват формализирана информация, в по-голяма степен те са изходният материал. Голям брой шаблони и дизайни са разработени, за да се справят с големи обеми информация. Голяма част от тази работа се извършва от механизми, вградени в различни системи за управление на обекта (CMS). Не е изненадващо, че много CMSs са станали de facto стандарти за изграждане на сайтове и, спонсорирани (обновявани) от разработчиците, те не правят необходимостта от самостоятелно разработване на шаблони. Въпреки това, извън тези системи, опитът с регулярни изрази е много полезен.

    Регулярни изрази и реална информация

    Важна област от използването на регулярни изрази в PHP е появата на PHPOffice библиотеки. Работата с документи и електронни таблици винаги е малка и важна, а стандартният OOXML позволява не само да разглобявате реални документи, но и да ги оформяте програмно. Благодарение на развитието на езиците за маркиране и PHP, по-специално, съществува реална възможност за автоматизиране на "производството" на стандартни документи, като фактуриране, отчети, бизнес планове и други информационни обекти, чиято структура и съдържание са предмет на формализиране и автоматизация. , Поради използването на процеса на OOXML описание на езика, развитието на регулярните изрази има съществена разлика от традиционната работа с HTML и CSS маркиращите езици. Истинският документ, освен маркирането и освен действителното съдържание, има много подробности. Например, документ, създаден автоматично от програмата, ще бъдеимат строго и точно значение. Документ, съставен от лице, независимо дали се обработва или не, ще има съдържание, нарисувано в набор от етикети. Всяка работа с документа води до това, че нейната семантика може да остане една, но боядисана вътре с различен брой различни дизайни.

    Естествена информация и ситуация

    Едно лице винаги се интересува от решаването на проблема, чието формулиране е информация, и в резултат на това ще се предоставя и информация. Представяйки формулирането на задача под формата на документ, човек получава определена семантика, която по време на усъвършенстването на специалистите (извършване на промени, изясняване на текста, изтриване, редактиране) води не само до различни опции на един документ, но и до неговите версии с различно съдържание. По-специално, задачата, поставена от фразата "Решаване на квадратни препятствия", след редактиране няма да изглежда така: "Решете квадратното уравнение." Ако първата грешка е била първо коригирана и след това втората, естествената информация в стила OOXML може да изглежда така: "[Resolve] [] [square] [e] [] [hurray] [in] [name]", но изобщо не е Гаранция, че точно това ще изглежда в OOXML таговете (квадратните скоби имитират скобите на таговете). Лесно е да се събира информация след всеки процес на редактиране на задача, но всеки път тази процедура ще се изпълнява по различни алгоритми. Редовните изрази, като вид инструмент за формализиране на информационните задачи, станаха по същество път от формалните хипертекстни структури до естествената информация.
  • Свързани публикации