Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Wyrażenia regularne - pierwsza spacja
rafalek1001
post 4.11.2018, 00:56:13
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 9.02.2013

Ostrzeżenie: (0%)
-----


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. }
Go to the top of the page
+Quote Post
trzczy
post 4.11.2018, 01:51:41
Post #2





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

Ostrzeżenie: (0%)
-----


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


Ten post edytował trzczy 4.11.2018, 02:05:17
Go to the top of the page
+Quote Post
rafalek1001
post 4.11.2018, 15:15:16
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 9.02.2013

Ostrzeżenie: (0%)
-----


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.

Ten post edytował rafalek1001 5.11.2018, 00:13:07
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 14:35