Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [class]stringProcessing, zbior funkcji do zmiany stringa
kriqs
post
Post #1





Grupa: Zarejestrowani
Postów: 148
Pomógł: 0
Dołączył: 31.05.2006

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


taka fajna klassa byla mi potrzebna do bloga aby tworzyc tagi (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) i pewnie da sie latwiej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ale luz.


dziekuje

Ten post edytował kriqs 5.04.2007, 15:30:47
Go to the top of the page
+Quote Post
devnul
post
Post #2





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

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


Cytat
Classa do obslugi...


co to za stwierdzenie Classa?? Pierwszy raz się spotykm (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
nospor
post
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
zbior funkcji do zmiany stringa
nono, a w tym zbiorze "aż" dwie funkcje (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
kriqs
post
Post #4





Grupa: Zarejestrowani
Postów: 148
Pomógł: 0
Dołączył: 31.05.2006

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


szczerze powiem to podajac ta cala klase chodzilo mi wlasnie o to co napisales (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) czyli uprosciles to (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . ja nie wiedzialem jak (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) oczywiscie poprawie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)


dziekuje
Go to the top of the page
+Quote Post
Whisller
post
Post #5





Grupa: Zarejestrowani
Postów: 77
Pomógł: 5
Dołączył: 29.03.2006
Skąd: Poznań

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


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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Troszeczkę paranoja dla mnie. Ale to tak btw (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
devnul
post
Post #6





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

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


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 29.08.2025 - 23:58