Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jak za pomocą str_replace usunąć wszystkie znaki jednoliterowe ?
Forum PHP.pl > Forum > Przedszkole
Greg23
$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.
phpion
Skorzystaj z preg_replace.
Greg23
A jaki wzór byłby na string jednoznakowy ?
Damonsson
  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);
phpion
Pozostaje kwestia czy frazy typu ",x", "y!" czy "z." też mają zostać usunięte. Pewnie nie, ale tego nie doprecyzowałeś.
Greg23
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 :/
Damonsson
Podaje dane wejściowe i oczekiwane wyjściowe. Bo wszystkie znaki jednoliterowe, nie są nimi u Ciebie, skoro zamieniasz spację na +.
Greg23
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 ?
Damonsson
  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.
Greg23
Teraz gra gitara. Wielkie dzięki za pomoc!!
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.