Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Pozostawienie w stringu tylko rządanych znaków, Sugestie
sadistic_son
post
Post #1





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Słuchajcie, mam jakiś string, przykładowo $str='abcdefg1234%^&*';
Oraz tablicę ze znakami dozwolonymi $arr= array('a','b','u','w','y',1,3,8,9,'!','*');

Zapodajcie propozycje jak obrobić $str tak aby pozostały w nim tylko znaki dozwolone, zawarte w $arr. Czyli aby po obróbce $str wyglądało tak: ab13*.
Wyrażenia regularne odpadają.

Ten post edytował sadistic_son 8.09.2010, 17:09:26


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Cytat
Wyrażenia regularne odpadają.
A to niby czemu?
Go to the top of the page
+Quote Post
sadistic_son
post
Post #3





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Bo nie bardzo je czaję a nie mam obecnie czasu ani tym bardziej chęci się ich uczyć.


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Wyrażenia regularne załatwiają cały problem jedną linią kodu, ale skoro nie to nie... Twój problem.
Baw się z rozwalaniem tekstu na pojedyncze znaki (explode), sprawdzaniem każdego (foreach) znaku czy jest w podanej tablicy (in_array) i jeżeli nie usuwaniem go (unset).
Go to the top of the page
+Quote Post
bastard13
post
Post #5





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

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


  1. $zmienna='';
  2. foreach($arr as $v)
  3. $zmienna.=$v;
  4.  
  5. $zmienna='/[^'.$zmienna.']/';
  6. echo preg_replace($zmienna,'',$str);

Tylko musisz zamienić '*' na '\*'

W sumie to rzeczywiście powinna być jedna linijka:)
  1. echo preg_replace('/[^'.implode($arr).']/','',$str);


Ten post edytował bastard13 8.09.2010, 17:18:02


--------------------
Go to the top of the page
+Quote Post
Quantum
post
Post #6





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

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


  1. $str ='abcdefg1234%^&*';
  2. $arr = array('a','b','u','w','y',1,3,8,9,'!','*');
  3.  
  4. $output = implode('', array_intersect(str_split($str), $arr));
  5. echo $output;


można też tak, ale też uważam że to głupota zastępować regexp takimi wynalazkami smile.gif

Ten post edytował Quantum 8.09.2010, 17:28:28
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: 19.08.2025 - 07:08