Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]przepuszczanie tylko liter i cyfr - jak?
messmaker
post 6.12.2009, 17:19:00
Post #1





Grupa: Zarejestrowani
Postów: 106
Pomógł: 5
Dołączył: 5.12.2008

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


Witam,

Poszukuję funkcji, która z abc[]def^*)123 zrobi abcdef123 czyli prosto mówiąc pozbawi ciąg znaków wszystkiego, co nie jest literą lub cyfrą.
Szukanie zakończyło się znalezieniem co najwyżej funkcji preg_match() zwracającej true jeśli dany string składał się wyłącznie z liter i cyfr i false jeśli nie, a to tylko połowa sukcesu.

Będę wdzięczny za każdą pomoc, mam nadzieję, że obejdzie się bez funkcji sprawdzającej po kolei każdy znak.

Pozdrawiam
Go to the top of the page
+Quote Post
piaseq
post 6.12.2009, 17:37:04
Post #2





Grupa: Zarejestrowani
Postów: 161
Pomógł: 25
Dołączył: 6.09.2008
Skąd: Warszawa

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


Moim zdaniem preg_replace() pasuje idealnie.
Go to the top of the page
+Quote Post
r4xz
post 6.12.2009, 17:46:22
Post #3





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

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


pierwszy z brzegu skrypt (napewno jest lepsza metoda winksmiley.jpg

  1.  
  2. <?php
  3. function czysc($str) {
  4. for($i = 0; $i < strlen($str); $i++) {
  5. if(preg_match('/[\w]/', $str[$i])) {
  6. $str2 .= $str[$i];
  7. }
  8.  
  9. }
  10.  
  11. return $str2;
  12. }
  13.  
  14. $string = 'abc[]def^*)123';
  15. echo czysc($string);
  16. ?>
  17.  
  18.  




--------------------
Go to the top of the page
+Quote Post
jasin
post 6.12.2009, 17:46:30
Post #4





Grupa: Zarejestrowani
Postów: 142
Pomógł: 32
Dołączył: 21.08.2008
Skąd: Toruń

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


Jeden ze sposobów:
  1. $subject = "abc[]def^*)123";
  2. $pattern = '/[A-Za-z0-9]/';
  3.  
  4. preg_match_all($pattern, $subject, $matches);
  5. $test = implode('', $matches[0]);
  6. echo $test;


--------------------
Go to the top of the page
+Quote Post
messmaker
post 6.12.2009, 17:52:14
Post #5





Grupa: Zarejestrowani
Postów: 106
Pomógł: 5
Dołączył: 5.12.2008

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


Wielkie dzięki!
Go to the top of the page
+Quote Post
Wicepsik
post 6.12.2009, 18:07:51
Post #6





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


  1. $tekst = 'abc[]def^*)123';
  2. echo preg_replace('/[^a-zA-Z0-9]/', '\1',$tekst);


Proszę, mniej kodu, lepszy w edycji.

Ten post edytował Wicepsik 6.12.2009, 18:08:33


--------------------
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 Wersja Lo-Fi Aktualny czas: 11.06.2024 - 04:20