Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][regex] wyrażenie regularne z wymuszeniem określonych znaków
AxZx
post
Post #1





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


witam,

czy jest możliwość ułożenia takiego zapytania, które wymuszałoby obecność w stringu minimum 3 liter oraz dopuszczałoby podanie 1 myślnika?

w skrócie:
minimum 3 litery, maksimum 1 myślnik.

po różnych kombinacjach wydaje mi się, że nie za bardzo. ale nie jestem w te klocki za dobry dlatego proszę o pomoc.

pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
MySQL
post
Post #2





Grupa: Zarejestrowani
Postów: 71
Pomógł: 4
Dołączył: 3.06.2008

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


Cytat(AxZx) *
minimum 3 litery, maksimum 1 myślnik

To oczywiście jest troszkę inne rozwiązanie bo wykorzystujące funkcję, a nie wyrażenie regularne. Nie wiem jak z wydajnościa, która będzie lepsza. Czy wyszukiwanie za pomocą wyr. reg. korzystające z teorii automatów skończonych czy też korzystając z tej funkcji i jednej pętli for (złożoność liniowa).

A oto sama funkcja:
  1. <?php
  2. function myReg($r)
  3. {
  4.   $l = 0; // licznik liter
  5.   $m = 0; // licznik myslnikow
  6.  
  7.   for($i = 0, $len = strlen($r); $i < $len; $i++)
  8.   {
  9.      if((($r[$i] >= 'A') && ($r[$i] <= 'Z')) || (($r[$i] >= 'a') && ($r[$i] <= 'z')))
  10.      {
  11.         $l++;
  12.      }
  13.      if($r[$i] == '-')
  14.      {
  15.         $m++;
  16.      }
  17.   }
  18.   return (($l >= 3) && ($m <= 1));
  19. }
  20. ?>

W każdym razie do czasu aż ktoś napisze dobrze to wyr. reg. (jeżeli już koniecznie musisz użyć wyr. reg.) możesz skorzystać z tej funkcji. Oczywiście zalecane byłoby żebyś dopisał jeszcze warunek na początku tej funkcji na wypadek, gdyby argument funkcji nie był łańuchem znaków, ale... (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował MySQL 16.05.2009, 18:42:30
Go to the top of the page
+Quote Post

Posty w temacie
- AxZx   [php][regex] wyrażenie regularne z wymuszeniem określonych znaków   13.05.2009, 23:39:03
- - zzeus   [a-zA-Z] - określa zakres znaków które mogą zostać...   14.05.2009, 07:11:58
|- - AxZx   Cytat(zzeus @ 14.05.2009, 08:11:58 ) ...   14.05.2009, 10:22:15
- - zzeus   [PHP] pobierz, plaintext <?phppreg_match('/...   14.05.2009, 11:44:21
|- - AxZx   Cytat(zzeus @ 14.05.2009, 12:44:21 ) ...   14.05.2009, 12:47:28
- - kacka   Mam nadzieje, że niczego nie pominąłem:) [PHP] pob...   15.05.2009, 09:02:17
|- - AxZx   Cytat(kacka @ 15.05.2009, 10:02:17 ) ...   15.05.2009, 10:27:05
- - webdice   W jednym wyrażeniu regularnym raczej tego nie zrob...   15.05.2009, 10:49:36
|- - AxZx   Cytat(webdice @ 15.05.2009, 11:49:36 ...   15.05.2009, 11:30:00
- - kacka   Jednak pominąłem: [PHP] pobierz, plaintext <?...   15.05.2009, 13:37:55
|- - AxZx   Cytat(kacka @ 15.05.2009, 14:37:55 ) ...   15.05.2009, 15:07:14
- - webdice   Cytat(kacka @ 15.05.2009, 14:37:55 ) ...   15.05.2009, 14:11:05
- - kacka   Przynajmniej fajnym kodem w skrypcie można poszpan...   15.05.2009, 14:20:47
- - kacka   Cytat(AxZx @ 15.05.2009, 14:07:14 ) -...   15.05.2009, 15:22:53
|- - AxZx   Cytat(kacka @ 15.05.2009, 16:22:53 ) ...   15.05.2009, 21:56:33
- - kacka   Możesz wcześniej preg_replace i usuwanie spacji;)   15.05.2009, 22:11:37
|- - AxZx   Cytat(kacka @ 15.05.2009, 23:11:37 ) ...   15.05.2009, 22:57:03
- - kacka   Jeśli chodzi o mnie, to przyjął bym że nazwisko je...   16.05.2009, 09:16:15
- - MySQL   Cytat(AxZx) minimum 3 litery, maksimum 1 myśl...   16.05.2009, 18:39:55


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

 



RSS Aktualny czas: 15.10.2025 - 19:12