Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyrażenia regularne, Negacja
Yorki
post 7.02.2012, 18:37:25
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 2
Dołączył: 12.09.2005

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


Witam, chcę napisać wyrażenie regularne które będzie sprawdzało czy link jest zwykłą statyczną stroną czy modułem.

Powiedzmy, że mam dwa moduły core i auth.

Oto przykładowe linki :
  • test - wyrażenie powinno zwrócić prawdę (to jest strona statyczna)
  • core - wyrażenie powinno zwrócić fałsz (jest to moduł)
  • auth/login - wyrażenie powinno zwrócić fałsz (jest to moduł)


Moje wyrażenie to :
  1. "/[^(auth|core)]/"


Do testu używam:
  1. $preg = "/[^(auth|core)]/";
  2.  
  3. if (preg_match($preg , 'test')){
  4. echo "<span style='color:green'>Test: Page</span><br>";
  5. } else {
  6. echo "<span style='color:red'>Test: Controller</span><br>";
  7. }
  8.  
  9. if (preg_match($preg , 'core')){
  10. echo "<span style='color:red'>Core: Page</span><br>";
  11. } else {
  12. echo "<span style='color:green'>Core: Controller</span><br>";
  13. }
  14.  
  15. if (preg_match($preg , 'auth/login')){
  16. echo "<span style='color:red'>auth/login: Page</span><br>";
  17. } else {
  18. echo "<span style='color:green'>auth/login: Controller</span><br>";
  19. }


Niestety auth rozpoznaje mi jako stronę statyczną. Można przekształcić to wyrażenie w taki sposób żeby zwracało fałsz wtedy gdy zaczyna się od 'auth' lub 'core' i ignoruje resztę znaków?

EDIT:
No więc teraz jestem na etapie, gdzie wszystko ładnie śmiga, ale jeśli będzie link author to uzna to jako moduł auth..

  1. (^(?!.*(auth|core)).*$)


Ten post edytował Yorki 7.02.2012, 18:38:13
Go to the top of the page
+Quote Post

Posty w temacie


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: 14.08.2025 - 04:33