Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] problem z wyrażeniem regularnym
darektbg
post
Post #1





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 25.09.2006

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


funkcja ma za zadanie usunięcie w ciągu znaków ";" jeżeli występują więcej niż jeden raz i zamiana ich na pojedyńczy.
  1. preg_replace('#[\\;]{2,}#', '\\;', $text);

Co tu jest nie tak?


--------------------
skocz.org - system skracania linków
Go to the top of the page
+Quote Post
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


  1. <?php
  2. $string = "ala;;; ma; kota;;; a;;;;; kot,;;; ma; ale;.";
  3. echo $string."<br>";
  4. echo preg_replace('/[;]+/', ';', $string);
  5. ?>
Go to the top of the page
+Quote Post
croc
post
Post #3





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Ja tam bym nie angażował wyrażeń regularnych do tak prostego zadania.
  1. while(strpos($text, ';;') !== false) {
  2. $text= str_replace(';;', ';', $text);
  3. }
Go to the top of the page
+Quote Post
varez
post
Post #4





Grupa: Zarejestrowani
Postów: 275
Pomógł: 32
Dołączył: 17.06.2007

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


Cytat(croc @ 12.05.2010, 17:46:44 ) *
Ja tam bym nie angażował wyrażeń regularnych do tak prostego zadania.

prosimy o test co jest szybsze smile.gif
w przypadku miliona średników kolo siebie, tysiąca, pięćdziesięciu, pięciu i dziesięciu tongue.gif
ja chyba jednak wole problemy rozwiązywać regularnymi, ale nie wiem jak w takim przypadku jest różnica w czasie
Go to the top of the page
+Quote Post
croc
post
Post #5





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Zrobiłem na szybko test i chyba moja teoria się nie sprawdza biggrin.gif Wykorzystałem string z ponad 10 tys. znaków i mnóstwem średników. Aby wynik był jak najbardziej wiarygodny, zrobiłem dwa osobne pliki.

Wynik:

Moja propozycja, ok. 0,013 s

Wyrażenie regularne: 0,0012 s

Czyli wyrażenie regularne jednak 10-krotnie szybsze biggrin.gif
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 Aktualny czas: 21.08.2025 - 01:19