Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [class]stringProcessing
Forum PHP.pl > Forum > Gotowe rozwiązania > Algorytmy, klasy, funkcje
kriqs
taka fajna klassa byla mi potrzebna do bloga aby tworzyc tagi smile.gif

  1. <?php
  2. /**
  3. * Classa do obslugi stringa usuwanie niedozwolonych znakow i zmiany
  4. *
  5. * @author Kriqs <mr.kriqs@gmail.com>
  6. * @version 0.2
  7. * @name stringProcessing
  8. */
  9.  
  10. class stringProcessing
  11. {
  12. /**
  13.   * Usuwa ze stringu wszystkie znaki ktore nie sa w paternie
  14.   * @param string $string Tekst do przerobienia, string $pattern wzor z ktorego ko
    zysta funkcja
  15.   * @return string
  16.   */
  17. public static function onlyAcceptChar( $string , $pattern )
  18. {
  19. preg_match_all($pattern, $string, $matches, PREG_OFFSET_CAPTURE);
  20. $text ='';
  21. foreach( $matches[0] as $char )
  22. {
  23. $text.=$char[0];
  24. }
  25. return $text;
  26. } 
  27.  
  28. /**
  29.   * Zmienia znaki 
  30.   * @param string $string Tekst do przerobienia, 
  31.   * @param mixed $from - $from = array( 'cos'=>'na' ) i $on = null, - $from = array( 'cos', 'cos2') na $on - $from = 'cos' na $on
  32.   * @return string
  33.   */
  34. public static function changeChar( $string , $from , $on = null )
  35. {
  36. if (is_null($on)){
  37. $on = array_values($from);
  38. $from = array_keys($from);
  39. }
  40. return str_replace( $from , $on , $string );
  41. }
  42. }
  43. ?>


Przyklady:
  1. <?php
  2. $string = 'Cze tu jest test [100] - 999 ';
  3. $pattern = '/([a-zA-Z0-9_ ])/';
  4.  
  5. echo stringProcessing::onlyAcceptChar($string , $pattern );
  6. echo '<br>';
  7. echo stringProcessing::changeChar( $string , array( ' ', 'x' ) , '_');
  8. echo '<br>';
  9. echo stringProcessing::changeChar( $string , array( ' '=>'_' , 'cze'=>'hello' ));
  10. ?>


nie wiem czy sie przyda smile.gif i pewnie da sie latwiej smile.gif ale luz.


dziekuje
devnul
Cytat
Classa do obslugi...


co to za stwierdzenie Classa?? Pierwszy raz się spotykm winksmiley.jpg
nospor
Cytat
zbior funkcji do zmiany stringa
nono, a w tym zbiorze "aż" dwie funkcje smile.gif

ten kod:
  1. <?php
  2. foreach( $from as $char )
  3. {
  4. $string = str_replace( $char , $on , $string ); 
  5. }
  6. ?>

zastepuje sie tym:
  1. <?php
  2. $string = str_replace( $from , $on , $string );
  3. ?>


Wogole metode changeChar mozna uproscic:
  1. <?php
  2. public static function changeChar( $string , $from , $on = null )
  3. {
  4. if (is_null($on)){
  5. $on = array_values($from);
  6. $from = array_keys($from);
  7. }
  8. return str_replace( $from , $on , $string );
  9. }
  10. ?>

Oczywiscie przyjalem twoje zalozenie, ktore nawiasem mowiac niekoniecznie zawsze musi byc sluszne, ze jesli $on jest nullem, to $from musi byc tablicą.

podsumowujac: ... a nie będę podsumowywal smile.gif
kriqs
szczerze powiem to podajac ta cala klase chodzilo mi wlasnie o to co napisales smile.gif czyli uprosciles to smile.gif. ja nie wiedzialem jak smile.gif oczywiscie poprawie smile.gif


dziekuje
Whisller
Jak mam być szczery to jakoś nie widzę sensu tworzenia takich "klas", bo to jest wciskanie OOP na siłę. Nie ważne czy będzie się tego dobrze używało, czy przypadkiem takie rozwiązanie nie jest wolniejsze. Ważne tylko żeby było w klasie winksmiley.jpg Troszeczkę paranoja dla mnie. Ale to tak btw tongue.gif
devnul
skoro temat już się rozwinoł to pozwole sobie na jeszcze mały komentarzyk:
to jest twoje rozwiązanie
  1. <?php
  2. public static function onlyAcceptChar( $string , $pattern )
  3. {
  4. preg_match_all($pattern, $string, $matches, PREG_OFFSET_CAPTURE);
  5. $text ='';
  6. foreach( $matches[0] as $char )
  7. {
  8. $text.=$char[0];
  9. }
  10. return $text;
  11. } 
  12. //użycie
  13. $string = 'Cze tu jest test [100] - 999 ';
  14. $pattern = '/([a-zA-Z0-9_ ])/';
  15.  
  16. echo stringProcessing::onlyAcceptChar($string , $pattern );
  17. ?>


a to moje
  1. <?php
  2. $string = 'Cze tu jest test [100] - 999 ';
  3. $string=preg_replace("/[^a-zA-Z0-9_ ]+/si","",$string);
  4. ?>

krótsze i szybsze

Więc jak widać nie dość że OOP wciskasz na siłe to jeszcze robisz te funkcje zupełnie zbędnie (nospor pokazła Ci wyżej jak skrócić drugą funkcje) - tak jakbyś chciał wynaleźć koło na nowo. Poćwicz lepiej znajomość podstaw bo tak to sam sobie zaszkodzisz
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.