Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Preg match a znaki interpunkcyjne
Forum PHP.pl > Forum > Przedszkole
Lethys
Witam,

Mam takie wyrazenie:

  1. if(!preg_match('/^([a-ż0-9_]+)$/i', $temat)){
  2. print "<br><br><font color=\"#d03b3b\"><b>Użyto niedozwolonych znaków w temacie!</b></font><meta http-equiv=\"Refresh\" content=\"1; url=poczta.php?view=sprawdz\">";
  3. }


Wszystko ok ale chciałbym dodać jeszcze możliwość używania znaków interpunkcyjnych. Jak powinno wyglądać pregmatch z literami, cyframi i znakami interpunkcyjnymi?
nospor
/^([a-ż0-9_\.\,]+)$/i
Lethys
Działa ale kiedy dodaje więcej możliwych znaków typu: ;,:,!,?

czyli wyglada to tak:

  1. if(!preg_match('/^([a-ż0-9_\.\,\:\;\(\)\?]+)$/i', $list)){
  2. print "<br><br><font color=\"#d03b3b\"><b>Użyto niedozwolonych znaków w treści listu.</b></font><meta http-equiv=\"Refresh\" content=\"1; url=poczta.php?view=sprawdz\">";
  3. }


wtedy jak użyje dozwolonego znaku np. ? wywala mi że nie można go używać mimo że zezwoliłem...

nospor
\ stosuje się przed znakami specjalnymi smile.gif
Warto by zapoznać się z podstawą wyrażen regularnych i poznać które znaki są specjalne
Lethys
No faktycznie,

Ale nigdzie nie mogę znaleźć jak uzwględnić (,),:,;

wyczytałem że (,) to również znaki specjalne a mimo wszystko nie chce działać z \

Jak zapisać preg match aby uzwględniało również te znaki ?
nospor
srednik nie jest znakiem specjalnym. Po prostu przed nim wywal te \
ps: dwukropek chyba tez nie jest - nie chce mi sie sprawdzac
Lethys
Szukam, szukam, czytam i nadal nie jestem w stanie tego zrobić sad.gif

Robię w ten sposób:

  1. if(!preg_match('/^([a-ż0-9():;_\.\,\?]+)$/i', $list)){
  2. print "<br><br><font color=\"#d03b3b\"><b>Użyto niedozwolonych znaków w treści listu.</b></font><meta http-equiv=\"Refresh\" content=\"1; url=poczta.php?view=sprawdz\">";
  3. }


próbowałem też w ten:

  1. if(!preg_match('/^([a-ż0-9_\.\,\?():;]+)$/i', $list)){
  2. print "<br><br><font color=\"#d03b3b\"><b>Użyto niedozwolonych znaków w treści listu.</b></font><meta http-equiv=\"Refresh\" content=\"1; url=poczta.php?view=sprawdz\">";
  3. }


I nadal nie działa jak moge zapisać preg match aby mi wykrywało litery, cyfry, , . ? () ; : tylko tyle chcę.
Piogola
Przecinek nie jest znakiem specjalny, a nawiasy są.
Lethys
Czyli nawiasy robie z /(/)

Ale co zrobić z ;: ?

  1. if(!preg_match('/^([a-ż0-9_;:\.\,\?\(\)]+)$/i', $list)){
  2. print "<br><br><font color=\"#d03b3b\"><b>Użyto niedozwolonych znaków w treści listu.</b></font><meta http-equiv=\"Refresh\" content=\"1; url=poczta.php?view=sprawdz\">";
  3. }


W ten sposob nie dziala
Piogola
W treści listu nie może być żadnej spacji ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.