Avatar billede giang Nybegynder
02. februar 2004 - 20:10 Der er 11 kommentarer

Fjern ulovlige tegn fra filnavn

Jeg har en variabel der angiver filnavne. Variablen må altså ikke indeholde ulovlige tegn som.
Variablen kunne f.eks. se således ud:

$filnavn = "noget tekst . , & ' * \" / ( ) osv. osv.";

Hvordan får man php til at fjerne alle disse og andre ulovlige tegn?
Avatar billede razmuz Nybegynder
02. februar 2004 - 20:21 #1
Følgende stump kode erstatter de mest gængse danske bogstaver og tegn med _

Du kan jo selv skrive flere på.

<?
// gør filnavnet pænt
$name = str_replace(" ", "_",
str_replace("Å", "å",
  str_replace("Æ", "æ",
  str_replace("Ø", "ø",
    str_replace("å", "aa",
    str_replace("æ", "ae",
      str_replace("é", "e",
      str_replace("ø", "oe",
        str_replace("&", "og",
        str_replace(".", "_", "$name"
))))))))));

// skriver variablen med små bogstaver
$name = strtolower($name);
?>
Avatar billede googolplex Novice
02. februar 2004 - 20:30 #2
Ville nok gøre således (taget fra manualen):

$phrase  = "You should eat fruits, vegetables, and fiber every day.";
$healthy = array("fruits", "vegetables", "fiber");
$yummy  = array("pizza", "beer", "ice cream");

$newphrase = str_replace($healthy, $yummy, $phrase);
Avatar billede erikjacobsen Ekspert
02. februar 2004 - 20:34 #3
Definer hvad du mener er lovlige tegn:

  $filnavn = eregi_replace('[^a-z0-9_.-]','_',$filnavn);
Avatar billede htm Nybegynder
02. februar 2004 - 20:34 #4
Lidt nemmere at definere de tilladte tegn, og så fjerne resten.

i dette er det kun bogstaver, tal og underscore der er tilladt.

$streng = "strengæøåÆØÅ,.-_";
$nystreng = eregi_replace("[^a-z0-9_]","",$streng);
Avatar billede erikjacobsen Ekspert
02. februar 2004 - 20:36 #5
Det der er indeni  [^    ]  skal være de lovlige tegn, og dem der så ikke er
lovlige bliver så erstattet med '_'. Husk at hvis du vil have '-' til at være med,
så skal det stå som sidste tegn.
Avatar billede googolplex Novice
02. februar 2004 - 20:39 #6
Ja, men hvad så hvis man vil have 'æ' skiftet ud med 'ae', 'å' med 'aa' osv. ?
Avatar billede htm Nybegynder
02. februar 2004 - 20:41 #7
googleplex>> Så skal du forbi noget str_replace som I har gang i, men det står der ikke defineret nogle steder :-)
Avatar billede erikjacobsen Ekspert
02. februar 2004 - 20:43 #8
Skitse:

  $s="blåbærgrød";

  $a["æ"]="ae";
  $a["ø"]="oe";
  $a["å"]="aa";

  $s = strtr($s,$a);

  print $s;
Avatar billede giang Nybegynder
02. februar 2004 - 20:52 #9
Jeg brugte den løsning som erikjacobsen og htm foreslog. hvis I lige laver et svar hver, så får I point.

Tak for hjælpen!
Avatar billede htm Nybegynder
02. februar 2004 - 21:14 #10
Giv point til Erikjacobsen, det er vist ham der har fortjent dem :-) Han var jo også hurtige end mig :-)
Avatar billede erikjacobsen Ekspert
02. februar 2004 - 21:15 #11
Tak, jeg samler ikke på point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester