![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 23.10.2003 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich zainteresowanych!
Uploaduje plik - raczej w standardowy sposób, bez udziwnień - kopiuje plik przez formularz, potem sprawdzenie czy jest skopiowany, potem wygenerowanie bezpiecznej nazwy i zapisanie go pod ta nazwa w katalogu docelowym. Sprawa dotyczy właśnie tej bezpiecznej nazwy. Przepuszczam nazwe pliku przez taką funkcję:
Jak widać funkcja ta zamienia polskie naki zakodowane w iso-8859-2 na uniwersalne znaki z podstawowego zestawu liter z alfabetu... Pytanie: jak przerobić tą funkcję na bardziej uniwersalną? Jest ona dobra dla polskich znakow, ale co z innymi? RObię dajmy na to stronę dla Francuzów, a oni mają te swoje porypane akcenty, do tego kodowanie iso-8859-1. Jak sprytnie przekonwertować taką nazwę na zakres podstawowych liter alfabetu A-Z i a-z oraz 1-9 bez żadnych dodatkowych literek, zamieniajac wszystkie spoza tego zakresu na znak podkreslenia: _ (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Podejrzewam, że możnaby użyć wyrażeń regularnych ale nie mam pojęcia jak... Jeśli ktoś ma jakiś pomysł/gotowy skrypt/dobrą radę to bardzo proszę o pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Przenoszę: Skrypty php -> php / crashu |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 23.10.2003 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Ok, zainspirowany odpowiedziami (za które dziękuję (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ) zmodyfikowałem trochę moj skrypt - choć nie zmniejszył swojej objętości (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Rozwiązanie które proponujecie działa pięknie, ale zamienia wszystkie "dziwne" litery na znak podkreslenia. A chodzi o to zeby na przyklad "ą" zamienić na "a" itp. Tak więc wrzucam poprawioną funkcję:
Dla powyższego kodu wynikiem będzie:
Jak widać polskie literki są zamieniane na podstawowe znaki z alfabetu, a wszystkie inne spoza zakrezu a-zA-Z1-9 są zamieniane na znak podkreslenia. Zaszla potrzeba rozdzielenia nazwy pliku od rozszerzenia - zrobilem explode() po kropce, pojawia się tylko pytanie: co jeśli w nazwie występuje więcej niż jedna kropka? Dla nazwa.doc.zip nazwa wynikową bedzie nazwa.doc, co jest już błędem... Jakieś pomysły co z tym fantem zrobić? Ten post edytował Birkoff 14.07.2005, 11:13:55 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 17:01 |