Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Wyrażenia regularne - pierwsza spacja
Forum PHP.pl > Forum > Przedszkole
rafalek1001
Witam. Tworzę walidację formularza i mam pole "Mecz" w której chcę, aby można było wpisać nazwę spotkania, np. "Liverpool - Chelsea". Wszystko jest ok. Za pomocą wyrażeń regularnych zablokowałem jeszcze możliwość wpisywania apostrofu i znaku równości oraz dodałem warunek if(empty($_POST['mecz']), który sprawdza czy pole nie jest puste. Problem jest tylko taki, że jeżeli przykładowo wpiszę w tym polu samą spację to rekord przechodzi i zostaję dodany do bazy danych. Moje pytanie: jak zablokować możliwość wpisywania samej spacji oraz spacji lub znaku ' albo = na pierwszej pozycji? (np. "=Liverpool - Chelsea", "'Liverpool - Chelsea" albo " Liverpool - Chelsea")

Próbowałem już kilka różnych wariantów, ale ciągle nie mogę sobie z tym poradzić. Poniżej ostatni kod:

  1. $mecz = $_POST['mecz'];
  2.  
  3. if(!preg_match('/^(\S|[^\'\=]){1}[^\'\=]+$/D', $_POST['mecz']))
  4. {
  5. $_SESSION['e_mecz']="Pole zawiera niedozwolone znaki!";
  6. $wszystko_OK = false;
  7. }
  8.  
  9. if((empty($_POST['mecz'])) || (!preg_match('/^\S{1}$/D', $_POST['mecz'])))
  10. {
  11. $_SESSION['e_mecz']="Pole nie może być puste!";
  12. $wszystko_OK = false;
  13. }
trzczy
https://ideone.com/LL5smq

  1. <?php
  2. $matches=[" Liverpool - Chelsea", "=Liverpool - Chelsea", "'Liverpool - Chelsea", "Liverpool - Chelsea", "Liverpool- Chelsea", "Liverpool -Chelsea", "Liverpool-Chelsea", "Liverpool-Chelsea ", "Lechia Gdańsk- Odra Wodzisław", "Szombierki Bytom - ŁKS Łódź"];
  3.  
  4. foreach ($matches as $member) {
  5. echo '"' . $member . '" ' . (preg_match('/^[\w\d][\w\d ]{2,}[ ]*-[ ]*[\w\d ]{2,}[\w\d]$/u', $member) ? 'true' : 'false') . "\n";
  6. }
  7. /*
  8. " Liverpool - Chelsea" false
  9. "=Liverpool - Chelsea" false
  10. "'Liverpool - Chelsea" false
  11. "Liverpool - Chelsea" true
  12. "Liverpool- Chelsea" true
  13. "Liverpool -Chelsea" true
  14. "Liverpool-Chelsea" true
  15. "Liverpool-Chelsea " false
  16. "Lechia Gdańsk- Odra Wodzisław" true
  17. "Szombierki Bytom - ŁKS Łódź" true
rafalek1001
Ok, dzięki. Jeszcze jedno pytanie co do tego kodu: co dokładnie oznacza kończące /u ? Bo nie mogę nigdzie znaleźć w Internecie.
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-2024 Invision Power Services, Inc.