Myślę, że masz więcej problemów niż tylko kropka nie pasująca do nowych linii, ale pozwól mi zacząć od zalecenia formatowania. Możesz użyć prawie dowolnego znaku interpunkcyjnego jako ogranicznika regex, a nie tylko ukośnika ("/"). Jeśli użyjesz innej postaci, nie będziesz musiał uciec z ukośników w regex. Rozumiem, że "%" jest popularny wśród PHPers; która stałaby swoją argumentację Wzór:
'%\{a\}([.\n]+)\{/a\}%'
Teraz powód, że regex nie działa jak ma się tak, ponieważ kropka traci swoje szczególne znaczenie, gdy pojawi się wewnątrz klasy znaków (nawiasy kwadratowe) - tak [.\n]
po prostu pasuje do kropki lub linii. Czego szukali był (?:.|\n)
, ale bym zaleca dopasowanie powrotu karetki, a także wysuw:
'%\{a\}((?:.|[\r\n])+)\{/a\}%'
To dlatego, że słowo „nowej linii” może odnosić się do stylu Unix „\ n”, Styl "\ r \ n" w stylu systemu Windows lub starszy styl Mac "\ r". Każda dana strona internetowa może zawierać dowolne z nich lub mieszankę dwóch lub więcej stylów; mieszanka "\ n" i "\ r \ n" jest bardzo powszechna. Ale z/sw trybie (znany również jako pojedynczej linii lub w trybie dotall), nie trzeba się martwić, że:
'%\{a\}(.+)\{/a\}%s'
Istnieje jednak inny problem z oryginalnego regex, który jest wciąż obecny w tym jednym: +
jest chciwy. Oznacza to, że jeśli w tekście występuje więcej niż jedna sekwencja {a}...{/a}
, po pierwszym zastosowaniu wyrażenia regularnego dopasuje je wszystkie, od pierwszego {a}
do ostatniego . Najprostszym sposobem, aby naprawić to, aby +
ungreedy (aka „leniwy” lub „niechętnie”) poprzez dodanie znaku zapytania:
'%\{a\}(.+?)\{/a\}%s'
Wreszcie, nie wiem, co zrobić z „$ "przed początkowym cytatem argumentu dotyczącego wzorca. Nie robię PHP, ale wygląda mi to na błąd składni. Jeśli ktoś mógłby mnie o tym poinformować, byłbym wdzięczny.
Wspaniale, wiedziałem, że będzie to coś prostszego! – DisgruntledGoat
Po prostu stwierdziłem, że te informacje są na stronie PHP, mimo że nigdy nie znalazłem tego wcześniej, gdy szukałem ... http://www.php.net/manual/en/reference.pcre.pattern.modifiers .php – DisgruntledGoat