Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Jak za pomocą str_replace usunąć wszystkie znaki jednoliterowe ?
Greg23
post 29.04.2015, 09:27:43
Post #1





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 6.04.2012

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


$get = str_replace("-", "", $get);

Chciałbym to połączyć z strlen, tak aby wstawić to jako pierwszy parametr w str_replace i żeby usunęło mi wszystkie znaki jednoliterowe.


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
phpion
post 29.04.2015, 09:33:58
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Skorzystaj z preg_replace.
Go to the top of the page
+Quote Post
Greg23
post 29.04.2015, 09:43:53
Post #3





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 6.04.2012

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


A jaki wzór byłby na string jednoznakowy ?


--------------------
Go to the top of the page
+Quote Post
Damonsson
post 29.04.2015, 09:54:50
Post #4





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


  1. $string = 'dsf dssde f vcbv fewr4 4 dfgdfg';
  2. $pattern = '/\s[\S]{1}\s/i';
  3. $replacement = ' ';
  4. echo preg_replace($pattern, $replacement, $string);
Go to the top of the page
+Quote Post
phpion
post 29.04.2015, 10:01:01
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Pozostaje kwestia czy frazy typu ",x", "y!" czy "z." też mają zostać usunięte. Pewnie nie, ale tego nie doprecyzowałeś.
Go to the top of the page
+Quote Post
Greg23
post 29.04.2015, 10:13:32
Post #6





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 6.04.2012

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


X,y,z też mają być usunięte, próbowałem sposobem Damonssona, ale coś mi to nie działa w moim kodzie:

  1. if ($_GET['kategoria']=='2') {
  2.  
  3.  
  4. if ($_GET['co']) {
  5. $get = str_replace(" ", "+", $_GET['co']);
  6. $get = str_replace("-", "", $get);
  7. $get = str_replace("&", "", $get);
  8. $get = str_replace("%26", "", $get);
  9.  
  10. $pattern = '/\s[\S]{1}\s/i';
  11. $replacement = '';
  12. $get=preg_replace($pattern, $replacement, $get);
  13.  
  14.  
  15. $get=strtolower($get);
  16. }
  17.  
  18. header("Location: ../szukaj/" . $get . "");


W linku mam ciągle stringi jednoznakowe, nie są one usunięte :/


--------------------
Go to the top of the page
+Quote Post
Damonsson
post 29.04.2015, 10:16:33
Post #7





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Podaje dane wejściowe i oczekiwane wyjściowe. Bo wszystkie znaki jednoliterowe, nie są nimi u Ciebie, skoro zamieniasz spację na +.
Go to the top of the page
+Quote Post
Greg23
post 29.04.2015, 10:44:15
Post #8





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 6.04.2012

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


Ten + i spacje to wyjątek, dam kodzin na początek, żeby nie kolidowało.
Ogólnie chcę zamienić wszystkie pojedyncze znaki oprócz plusa i spacji, może być też tak że zamieniamy po prostu
wszystkie znaki iterowe [a-z][A-Z] oraz cyfry [1-9], może tak będzie prościej ?


--------------------
Go to the top of the page
+Quote Post
Damonsson
post 29.04.2015, 10:52:13
Post #9





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


  1. $string = 'a dsf dssde f vcbv fewr+s4 4 dfg dfg a a';
  2. $pattern = '/\b[a-zA-z0-9]{1}\b/i';
  3. $replacement = '';
  4. $wo = preg_replace($pattern, $replacement, $string);
  5. $output = preg_replace('/\s+/', ' ',$wo);
  6. echo trim($output);


Lepiej? Dodałem jeszcze usuwanie z końca i początku. Jak nie, to podaj co Ty wstawiasz pod $string i co źle działa. Pojedynczy znak to każdy znak tak naprawdę przecież, więc może być ciężko się dogadać bez przykładów.
Go to the top of the page
+Quote Post
Greg23
post 29.04.2015, 22:20:24
Post #10





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 6.04.2012

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


Teraz gra gitara. Wielkie dzięki za pomoc!!


--------------------
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: 14.08.2025 - 11:33