Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] preg_replace
WoGuziczek
post 12.09.2009, 10:43:54
Post #1





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 17.09.2008

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


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?
Go to the top of the page
+Quote Post
potreb
post 12.09.2009, 10:45:39
Post #2





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


  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

Ten post edytował potreb 12.09.2009, 10:47:59


--------------------

Go to the top of the page
+Quote Post
WoGuziczek
post 12.09.2009, 10:51:44
Post #3





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 17.09.2008

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


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
Go to the top of the page
+Quote Post
potreb
post 12.09.2009, 11:05:54
Post #4





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


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.


--------------------

Go to the top of the page
+Quote Post
WoGuziczek
post 12.09.2009, 11:09:50
Post #5





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 17.09.2008

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


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
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: 16.07.2025 - 05:07