Rozwiązanie (o którym inne odpowiedzi nie wspominają - przynajmniej w czasie, kiedy to pisałem) jest takie, że kiedy PHP odnosi się do ograniczników, nie odnosi się do ograniczników, które widzisz w kodzie (które są cudzysłowami), ale następny znaków w ciągu. (Właściwie nigdy nie widziałem tego nigdzie w żadnej dokumentacji: musisz to zobaczyć w przykładach). Zamiast więc mieć składnię wyrażeń regularnych, taką jak ta, do której możesz być przyzwyczajony w wielu innych językach:
/something/
PHP używa łańcuchów, a następnie szuka w nich innego separatora:
'/something/'
Separator, do którego odnosi się PHP, to para /
znaków zamiast pary '
znaków. Więc jeśli piszesz 'something'
, PHP weźmie s
za zamierzony separator i narzeknie, że nie możesz używać znaków alfanumerycznych jako separatora.
Więc jeśli chcesz przekazać (na przykład) an, i
aby pokazać, że chcesz dopasować bez uwzględniania wielkości liter, przekazujesz go wewnątrz ciągu, ale poza ogranicznikami wyrażenia regularnego:
'/something/i'
Jeśli chcesz użyć czegoś innego niż /
jako separatora, możesz, na przykład, dopasować adres URL i nie chcesz uciekać przed wszystkimi ukośnikami:
'~something~'
preg_match()
jako zmienne, upewnij się, że kolejność zmiennych nie została przypadkowo pomieszana w wywołaniu funkcji, ponieważ prawie na pewno spowoduje to to samo pojawia się błąd.