Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak przerobić dowolny ciąg znaków na bezpieczna azwe folderu?
Forum PHP.pl > Forum > PHP
tmgryf
Jeśli user tworzy katalog poprzez formularz z którego później będę wyświetlał zdjęcia na stronie to jak przerobić to co user wklepał na "bezpieczną" nazwę czyli np bez spacji, liter z ogonkami, znaków specjalnych itd?
Moli
Tablica + str_raplce smile.gif
kefirek
A nie lepiej sprowadzać czy nazwa jest ok. jeśli nie to wyświetlasz komunikat by poprawił nazwę a jak jest ok. to tworzysz folder plik
  1. <?php
  2. $nazwa = 'jakas nazwa';
  3.  
  4. if (!preg_match("/^[-0-9A-Z_.[]]+$/i", $nazwa)) {
  5. echo 'Nie dozwolona nazwa';
  6. }
  7. ?>
tmgryf
to trochę dużó jestmożliwości, biorac pod uwagę ile jest jezyków jeśli chodzi o str replace i tablice....

liter z przegłosami jest cale multum.... jak np. liteke e z dowolnymi przeglosami (we w francuskim sa juz dwa) zamienic na e bez przegłosu? chyba ze gdzieś jest dostepna tablica ze wszystkimi mozliwymi przeglosami?


// jestescie turbo szybcy
erix
Cytat
"bezpieczną"

basename" title="Zobacz w manualu PHP" target="_manual... Wówczas nie nastąpi nic, co mogłoby zagrozić plikom.

Cytat
jak np. liteke e z dowolnymi przeglosami (we w francuskim sa juz dwa) zamienic na e bez przegłosu? chyba ze gdzieś jest dostepna tablica ze wszystkimi mozliwymi przeglosami?

http://www.unicode.org/charts/
tmgryf
basename" title="Zobacz w manualu PHP" target="_manual... mialem na mysli bezpieczna ze wzgledu na znaki diakryczne


http://www.unicode.org/charts/ - to jest niedoprzerobienia.. hehe


to chyba rozwiaza moj problem:

iconv('UTF-8', 'ASCII//TRANSLIT', $s);

i w ramach ciekawostki sie spytam.... jesli kojure strone w utf-8 to czy dane z formularza tez dostane w utf-8?
webdice
  1. <?php
  2. preg_replace ('#([^a-zA-Z0-9]+)#', '_', $str);
  3. ?>


Jeśli chcesz zamieniać np. ś na s to musisz zrobić sobie odpowiednią tablice i na jej podstawie zamieniać znaki.
tmgryf
  1. <?php
  2. $s='!@##@%&^//[]}{ŚŻĆŻŁÓĘĄŃ';
  3. $tmp=iconv('UTF-8', 'ASCII//TRANSLIT', $s);
  4. $tmp=str_replace("'","",$tmp);
  5. $tmp = preg_replace('/^W+|W+$/', '', $tmp);
  6. $tmp = preg_replace('/s+/', '_', $tmp);
  7. echo strtolower(preg_replace('/W-/', '', $tmp));
  8. ?>


Skleciłem takie coś. Jako wynik daje: "szczloean"

dziekuje wszystkim za zainteresowanie
Vengeance
  1. <?php
  2. function strip($name)
  3. {
  4.    $result = mb_strtolower($name, "UTF-8");
  5.    $result = str_replace(array('ę', 'ó', 'ą', 'ś', 'ł', 'ż', 'ź', 'ć', 'ń'), array('e', 'o', 'a', 's', 'l', 'z', 'z', 'c', 'n'), $result);
  6.    $result = preg_replace('/[W]/', ' ', $result);
  7.    $result = preg_replace('/ +/', '-', $result);
  8.    $result = preg_replace('/-$/', '', $result);
  9.    $result = preg_replace('/^-/', '', $result);
  10.    return $result;
  11. }
  12. ?>
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.