Предполагам, че това е повече или по-малко въпрос от две части, но ето първо основите: пиша малко PHP, за да използвам preg_match_all, за да търся в променлива низове, завършващи книга от {}. След това преминава през всеки върнат низ, заменя намерените низове с данни от MySQL заявка.
Първият въпрос е следният: Има ли добри сайтове, където наистина да научите тънкостите на PCRE изразите? Търсих много в Google, но най-доброто, което успях да намеря досега, е http://www.regular-expressions.info/. По мое мнение информацията там не е добре организирана и тъй като предпочитам да не се налага да моля за помощ, когато трябва да напиша сложен регулярен израз, моля, насочете ме към няколко сайта (или няколко книги!) това ще ми помогне да не ви безпокоя в бъдеще.
Вторият въпрос е следният: имам този регулярен израз
"/{.*(_){1}(.*(_){1}[a-z]{1}|.*)}/"
и имам нужда от него, за да хвана случаи като {first_name}, {last_name}, {email}
и т.н. Имам три проблема с този регулярен израз.
Първото е, че вижда "{first_name} {last_name}
" като един низ, когато трябва да го вижда като два. Успях да разреша това, като проверих съществуването на пространството, след което експлодирах върху пространството. Объркано, но работи.
Вторият проблем е, че включва препинателни знаци като част от заснетия низ. Така че, ако имате "{first_name} {last_name}
,", то връща запетаята като част от низа. Успях частично да разреша това, като просто използвах preg_replace за изтриване на точки, запетаи и точки и запетая. Въпреки че работи за тези препинателни знаци, моята логика не може да се справи с удивителни знаци, въпросителни знаци и всичко останало.
Третият проблем, който имам с този регулярен израз, е, че той изобщо не вижда екземпляри на {email}.
Сега, ако можете, желаете и имате време просто да ми дадете решението на този проблем, благодаря ви, тъй като това ще реши непосредствения ми проблем. Въпреки това, дори ако можете да направите това, моля, моля предоставете lmgfty, който предоставя добри уеб сайтове като препратки и/или книга или две, които биха предоставили добро образование по този въпрос. Сайтовете биха били за предпочитане, тъй като парите са ограничени, но ако решението е книга, ще намеря парите (ако приемем, че моята местна библиотечна система не е в състояние да осигури въпросния том).
?
на правилните места :) - person 0xC0000022L   schedule 05.06.2012