Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] preg_replace
Forum PHP.pl > Forum > Przedszkole
WoGuziczek
Witam!

Buduję funkcję zamieniania znaków na "czyste".
Na pocz±tek zdefiniowałem sobie co¶ takiego:

  1. function czysc($text)
  2. {
  3. $replaceschar = array(
  4. '·' => 'a',
  5. '¦' => 's',
  6. '¶' => 's',
  7. '¬' => 'z',
  8. 'Ą' => 'z',
  9. 'Ć' => 'c',
  10. 'ć' => 'c',
  11. 'č' => 'c',
  12. 'ˇ' => 'a',
  13. '±' => 'a',
  14. 'Ę' => 'e',
  15. 'ę' => 'e',
  16. 'Ł' => 'l',
  17. 'ł' => 'l',
  18. 'Ń' => 'n',
  19. 'ń' => 'n',
  20. 'Ó' => 'o',
  21. 'ó' => 'o',
  22. '¦' => 's',
  23. '¶' => 's',
  24. 'ą' => 's',
  25. '¬' => 'z',
  26. 'Ľ' => 'z',
  27. 'Ż' => 'z',
  28. 'ľ' => 'z',
  29. 'ż' => 'z',
  30. );
  31. $text = strtolower($text);
  32. $find = array_keys($replaceschar);
  33. $replace = array_values($replaceschar);
  34. $text = str_replace($find, $replace, $text);
  35. // tutaj reszta o której napiszę niżej
  36. return $text;
  37. }


Teraz chciałem zrobić co¶ takiego, żeby przy użyciu funkcji preg_match sprawdzić czy w ci±gu znaków $text znajduj± się znaki inne niż te, które wyżej zamieniłem (czyli znaki bez ogonków)
Jeżeli s± - to chciałbym wykonać preg_replace, żeby każdy inny znak zamieniło na "_".

Jak ułożyć wyrażenia regularne?
potreb
  1. $tekst = 'Zażółć gę¶l± jaĽń';
  2. $wynik = strtr($tekst, 'ĘÓˇ¦ŁŻ¬ĆŃęó±¶łżĽćń', 'EOASLZZCNeoaslzzcn');
  3. echo($wynik);


Czy istniej± inne znaki, nie wiem, jeżeli to robisz dla tego aby nazwa np zał±cznika była poprawna to możesz użyć preg_replace i powywalać wszystkie znaki oprócz a-Z
WoGuziczek
Cytat(potreb @ 12.09.2009, 11:45:39 ) *
możesz użyć preg_replace i powywalać wszystkie znaki oprócz a-Z


No wła¶nie o to pytam winksmiley.jpg
potreb
Wg mnie zrób preg_match'a i powywalaj wszystkie znaki oprócz a-Z 0-9 w taki sposób jak to chcesz zrobić chyba nie znajdziesz rozwi±zania.
WoGuziczek
Cytat(potreb @ 12.09.2009, 12:05:54 ) *
Wg mnie zrób preg_match'a i powywalaj wszystkie znaki oprócz a-Z 0-9 w taki sposób jak to chcesz zrobić chyba nie znajdziesz rozwi±zania.


Znalazłem winksmiley.jpg

  1. $text = preg_replace("/[^a-zA-Z0-9_]/", "_", $text);


Pozdrawiam winksmiley.jpg
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.