Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: usuwanie powtarzajacego sie ciagu znakow
Forum PHP.pl > Forum > PHP
pfan
mamy sobie jakis text w ktorym powtarzaja sie niepotrzebnie np. adresy www, wyrazy, czy idzie za pomoca php je usunac ?
Radarek
no jasne: poszukaj cos o wyrazeniach regularnych [regex expression - w skrocie: regexp]
matid
Cytat(Radarek @ 2005-05-30 17:21:55)
no jasne: poszukaj cos o wyrazeniach regularnych [regex expression - w skrocie: regexp]

Rozwinięciem skrótu regexp jest Regular expression a nie Regex Expression.

Tutaj więcej na ten temat:
http://en.wikipedia.org/wiki/Regexp
Radarek
Cytat(matid @ 2005-05-30 15:32:24)
Cytat(Radarek @ 2005-05-30 17:21:55)
no jasne: poszukaj cos o wyrazeniach regularnych [regex expression - w skrocie: regexp]

Rozwinięciem skrótu regexp jest Regular expression a nie Regex Expression.

Tutaj więcej na ten temat:
http://en.wikipedia.org/wiki/Regexp

Tak masz racje. Pospieszylem sie za bardzo smile.gif
pfan
i tak nie mam pojecia jak to zrobic sadsmiley02.gif
Radarek
Cytat(pfan @ 2005-05-30 18:18:52)
i tak nie mam pojecia jak to zrobic sadsmiley02.gif

No to powiedz konkretnie co chcesz zrobic to ktos na pewno ci pomoze smile.gif.
strife
Cytat(pfan @ 2005-05-30 20:18:52)
i tak nie mam pojecia jak to zrobic sadsmiley02.gif

Witam,

Tu masz mnóstwo przykładów i opisów co do wyrażeń regularnych, mimo tego na kursie podajrze leon'a jest coś o wyrażeniach regularnych, możesz też ugryść to przez google.
http://pl.php.net/manual/pl/ref.pcre.php
http://pl.php.net/manual/pl/ref.regex.php

Pozdro!
pfan
Cytat(Radarek @ 2005-05-30 19:44:32)
No to powiedz konkretnie co chcesz zrobic to ktos na pewno ci pomoze smile.gif.

mamy np.
$text = 'wyraz1 wyraz2 wyraz3 wyraz1';
wiec jak wyrzucic wyraz1 bo sie powtarza ?
Ociu
Można wyrazy wrzucić do tablicy i dać array_unique" title="Zobacz w manualu PHP" target="_manual.
pfan
a jak najszybciej wrzucic do tablicy, bo tekst jest dosc dlugi
strife
Wymyśliłem coś takiego na szybko:
  1. <?php
  2.  
  3.  $text = 'wyraz1 wyraz2 wyraz3 wyraz1';
  4.  
  5. $z = explode(' ', $text);
  6.  
  7. foreach($z as $k)
  8. {
  9.  
  10.  $zed[$k] = $k;
  11.  
  12. }
  13. foreach($zed as $o)
  14. {
  15.  
  16.  echo $o;
  17.  
  18. }
  19.  
  20. ?>


Powinno działac jedynie musisz do tego dodać jeszcze space po explode uciął je.

Pozdro!
pfan
dziala,
tylko ze miedzy wyrazami nie ma odstepow, tzn. wynik to
wyraz1wyraz2wyraz3
strife
Cytat(pfan @ 2005-05-31 20:44:09)
dziala,
tylko ze miedzy wyrazami nie ma odstepow, tzn. wynik to
wyraz1wyraz2wyraz3

  1. <?php
  2.  
  3. $text = 'wyraz1 wyraz2 wyraz3 wyraz1';
  4.  
  5. $z = explode(' ', $text);
  6.  
  7. foreach($z as $k)
  8. {
  9.  
  10.  $zed[$k] = $k.' '; // o to chodzi?
  11.  
  12. }
  13. foreach($zed as $o)
  14. {
  15.  
  16.  echo $o;
  17.  
  18. }
  19.  
  20. ?>

questionmark.gif?
pfan
nom
wszystko dziala, wielkie dzieki winksmiley.jpg
FiDO
Mozna troche krocej:
  1. <?php
  2.  
  3. $text = 'wyraz1 wyraz2 wyraz3 wyraz1';
  4.  
  5. echo implode(' ', array_unique(explode(' ', $text)));
  6.  
  7. ?>
dvc
a co dziala szybciej ? winksmiley.jpg
strife
Cytat(dvc @ 2005-05-31 23:52:46)
a co dziala szybciej ? winksmiley.jpg

Jeśli jest napisany krócej to zajmuje mniej bajtów, jeśli zajmuje mniej to chyba logiczne jest że będzie działał szybciej, chociaż niekoniecznie tak jest, ale lepsze są z reguły proste rozwiązania.
dvc
Cytat(scarface @ 2005-05-31 22:56:13)
Cytat(dvc @ 2005-05-31 23:52:46)
a co dziala szybciej ? winksmiley.jpg

Jeśli jest napisany krócej to zajmuje mniej bajtów, jeśli zajmuje mniej to chyba logiczne jest że będzie działał szybciej, chociaż niekoniecznie tak jest, ale lepsze są z reguły proste rozwiązania.

no jak sie okazuje nie zawsze mniej znaczy szybciej winksmiley.jpg
ot chocby glupie mnozenie tak naprawde to dodawanie winksmiley.jpg w komputerze

chodzilo mi glownie o porownanie predkosci tych dwoch wczesniejszych rozwiazan;
moze ktos je przetestowal w jakiejs petli paro tysiecznej i zmierzyl czas winksmiley.jpg
pfan
niestety nie radzi sobie juz z bardziej skompikowanym ciagiem, np. z adresami www typu htpp://domena.pl/podstrona.php
SongoQ
Nie zawsze krotszy kod jest szybszy, wszystko zalezy od wykorzystanych algorytmow.

Mozna to prosto przeanalizowac.
Kod @scarface wykorzystuje podzial na tablice, petla foreach (jak wiadomo jest to kopia tablicy sad.gif ), a kod @FiDO - tworzenie tablicy i zwrocenie unikalnych pozycji.

Z tego co pamietam array_unique operuje na orginalnej tablicy czyli ten kod bedzie optymalniejszy.
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.