Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> preg_match(), wyrażenia regularne
cudny
post
Post #1





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


Witam, mam problem z wyrażeniem regularnym, poniżej przykład jak chciałem to rozwiązać, niestety nie działa.

  1.  
  2. $string = '1,2,3,4,5,6,7';
  3.  
  4. echo preg_match('/(1|3|5){2}/', $string);
  5.  


Chodzi o to, aby sprawdzić czy w $string istnieje jedynka i trójka i piątka.
Oczywiście cyfry są tylko dla ułatwienia, w rzeczywistości są to ciągi znaków i kolejność nigdy nie jest taka sama.
Moje wyrażenie miało sprawdzić czy w stringu istnieje 1 lub 3 lub 5 dokładnie trzy razy, co wydaje się być logiczne i powinno działać, niestety z tego co widzę parser zwraca wystąpienie tylko raz przy pierwszym napotkanym true.

Bardzo proszę o pomoc. Jak znaleźć czy w stringu istnieje 1 i 3 i 5.
Dokładnie tłumacząc to co mam na myśli: $string może składać się z czegokolwiek ale musi zawierać 1 i 3 i 5 gdzie kolejność cyfr w $string jest przypadkowa.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
pyro
post
Post #2





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Cytat(cudny)
Doszedłem do wniosku, że chyba nie da się wyrażeniami tego rozwiązać (oczywiście nie dłuuuugaśnymi, już lepiej zrobić ładną funkcję, która będzie pewnie bardziej wydajna).


No cóż... mylić się jest rzeczą ludzką

Cytat(melkorm)
I dobrze myślisz, jeżeli się da to lepiej unikać wyrażeń regularnych (upraszczając oczywiście).


To znaczy, że musisz jeść więcej warzyw.

  1. preg_match('|1[^1]+?3[^13]+?5[^135]*$|', $string);


Możliwe, że czegoś nie zrozumiałem, ale to wyrażenie powinno sprawdzić czy w $string występują dane liczby tylko raz w danej kolejności. Chyba o to chodziło?
Go to the top of the page
+Quote Post

Posty w temacie
- cudny   preg_match()   4.11.2011, 14:55:11
- - Sephirus   A może by tak użyć substr_count() Ta funkcja zwra...   4.11.2011, 15:06:01
- - cudny   nie chodzi mi o funkcję, to musi być wyrażenie reg...   4.11.2011, 15:09:05
- - Sephirus   Jedyne co mi zatem przychodzi do głowy to "be...   4.11.2011, 15:20:52
- - cojack   "/(1)\d+(3)\d+(5)\d+/" @...   4.11.2011, 15:27:00
- - cudny   [PHP] pobierz, plaintext echo preg_match('/...   4.11.2011, 15:34:53
- - Sephirus   Nie jest prościej bo jest źle String "111...   4.11.2011, 15:35:35
- - blooregard   Coś takiego wymodziłem: [PHP] pobierz, plaintext ...   4.11.2011, 15:39:52
- - cudny   Cytat(Sephirus @ 4.11.2011, 15:35:35 ...   4.11.2011, 15:44:59
- - blooregard   Cytatdziala, ale tak jak napisal sephirus, przejdz...   4.11.2011, 15:49:36
- - Sephirus   Ok skoro jeszcze chcesz bez powtórzeń to wymiękam ...   4.11.2011, 15:57:59
- - melkorm   Może po prostu napisz o jaki konkretny problem cho...   4.11.2011, 16:02:36
- - cudny   Ale baaaardzo duże ciągi by to były Napisanie wyr...   4.11.2011, 16:09:43
- - melkorm   Do spamerów raczej nie należę, ale najwidoczniej s...   4.11.2011, 16:16:35
- - cudny   Cytat(melkorm @ 4.11.2011, 16:02:36 )...   4.11.2011, 16:28:36
- - melkorm   CytatInni zrozumieli Ja też, ale po Twoich wyjaśni...   4.11.2011, 16:46:50
- - pyro   Cytat(cudny)Doszedłem do wniosku, że chyba nie da ...   4.11.2011, 17:04:34
- - melkorm   CytatOczywiście cyfry są tylko dla ułatwienia, w r...   4.11.2011, 17:12:30
|- - pyro   Cytat(melkorm @ 4.11.2011, 17:12:30 )...   4.11.2011, 17:32:23
- - cudny   Cytat(pyro @ 4.11.2011, 17:32:23 ) Ro...   4.11.2011, 20:46:55


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 Aktualny czas: 6.10.2025 - 20:35