Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] problem z wyrażeniem regularnym
Forum PHP.pl > Forum > Przedszkole
darektbg
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?
tehaha
  1. <?php
  2. $string = "ala;;; ma; kota;;; a;;;;; kot,;;; ma; ale;.";
  3. echo $string."<br>";
  4. echo preg_replace('/[;]+/', ';', $string);
  5. ?>
croc
Ja tam bym nie angażował wyrażeń regularnych do tak prostego zadania.
  1. while(strpos($text, ';;') !== false) {
  2. $text= str_replace(';;', ';', $text);
  3. }
varez
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
croc
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.