..


Linki sponsorowane

PCRE obsługiwane są wyrażenia regularne (i różnice funkcji POSIX)

Artykuł napisany przez Max Bossi
Strona 1 z 4

Mieliśmy już do zrozumienia, w ostatnich dniach na stronach naszego bloga, ale dzisiaj chciałbym zbadać temat, który moim zdaniem będzie zainteresuje tysiące programistów - jak ja - codziennego użytku PHP do rozwijania aplikacji internetowych.

Począwszy od wersji 5.3 PHP, w rzeczywistości, deweloperów, którzy chcą wykorzystać potencjał wyrażenia regularne nie mogą już korzystać z funkcji POSIX (że tak powiem ereg () i rodziny), ale musi z konieczności korzystania z funkcji PCRE (Perl Compatible Regular Expressions), na przykład, preg_match () .

PCRE funkcji wbudowanych w PHP pozwala na używanie typowych składni wyrażeń regularnych Perla (dokładniej, obecna implementacja zapewnia wsparcie dla składni Perl 5.005), który jest nieco inny od tego z funkcji POSIX. Aby uzyskać więcej informacji na temat składni PCRE można zapoznać się z obsługi na oficjalnej stronie internetowej PCRE.org.

Porównania: preg_match ()

Jeśli chcesz dokonać porównania między ciągiem i wzoru (wzór zapisać w postaci wyrażeń regularnych) będą musieli korzystać z preg_match (), że w rzeczywistości, wymień ereg () oraz eregi ().

Korzystanie z preg_match () jest w powszechnym użyciu, bardzo prosta: możesz przekazać funkcję wzorca i ciągów do sprawdzenia. Jeżeli wzór jest spełniony, funkcja zwraca 1, jeśli 0 (lub FALSE w przypadku błędu).

W rzeczywistości migracji z ereg () nie jest skomplikowana sprawa. Będziesz potrzebował trochę pomysłowości w formułowaniu wzoru.

Oto przykład:

 



 <? PHP







 if (preg_match ('/ mrwebmaster / i "," Niech żyje MrWebmaster!')) {



  



 echo "Znaleziono";







 Else {}



  



 echo "Nie znaleziono";







 }







 ?>

 
Jest to ten sam:
 



 <? PHP







 if (eregi ("mrwebmaster", "Niech żyje MrWebmaster! ')) {



  



 echo "Znaleziono";







 Else {}



  



 echo "Nie znaleziono";







 }







 ?>

 

W naszym prostym przykładzie wykorzystania preg_match () użyliśmy ciąg jako wzorzec

 



 / Mrwebmaster / s

 
Zobaczmy składni:
  • / ... / - Wyznaczają początek i koniec wypowiedzi;
  • mrwebmaster - jest prosty ciąg znaków, który chcesz sprawdzić tekst przekazany jako drugi argument;
  • i - "i" po zamknięciu ogranicznik oznacza, że wyszukiwanie NIE powinien być wielkość liter (podobnie jak to zrobić za pomocą funkcji eregi ()). Technicznie "i" jest modyfikator, w tej stronie pełną listę modyfikatorów dozwolone w składni PCRE.

Różnica z ereg ()

Jak widać różnica z ereg () nie jest wiele, podsumujmy je krótko:

  • zastosowanie ograniczników / ... / (faktycznie można korzystać z innych znaków jako ogranicznik, ale slash jest zwykle wybór);
  • bez uwzględniania wielkości liter wersji (eregi ()) otrzymuje za pomocą "i" po zamknięciu delimiter;
  • obecność znaku / w modelu wymaga (jeśli są używane do ukośnika jako separatora) ucieczki (\ /), aby nie mylić z ograniczników;
  • Istnieją pewne drobne różnice w zarządzaniu znaków ASCII (funkcje POSIX, w przeciwieństwie do PCRE zaakceptować numerycznych znaków ASCII:. Np. odpowiada liczbie 10 i 13 nowe karetki linii; odwrotnie z PCRE funkcje 10 stanowi wyłącznie numer dziesięć).
  • ereg function () przyjmuje tylko trzy parametry (wzór, tekst do sprawdzenia i, ewentualnie, tablicę do przechowywania wyników) i preg_match () przyznaje pięć (dwa pierwsze, już wiemy, jakie są wymagane, pozostałe trzy są opcjonalne );

Na podstawie powyższych (i różnic, które zostały wymienione), możemy rozważyć ponownie (częściowo) ważne teoretycznych wyjaśnień na temat składni wyrażeń regularnych można znaleźć na tej stronie w artykule "wyrażeń regularnych w PHP" poświęcona starym funkcje POSIX .

W tej samej kategorii ...
E-Learning
Linux (Kurs) Linux (Kurs)
Kompletny przewodnik do systemu open-source. Od 49 €.
MySQL (Kurs) MySQL (Kurs)
Zarządzanie bazą danych open-source. Od 39 €.
PHP (Kurs) PHP (Kurs)
Pełny kurs tworzenia dynamicznych stron internetowych. Od 49 €.
Linki sponsorowane