webForumDet fria alternativet

MakeSafeName

12 svar · 352 visningar · startad av daPhil

daPhilMedlem sedan apr. 2001151 inlägg
#1

Jag är ute efter en funktion som gör om t.ex. ett filnamn så det är säkert på webben. Typ

MakeWebsafeName(myFile)

Finns det någon sådan eller måsta man göra den själv *suck* ;)

daPhilMedlem sedan apr. 2001151 inlägg
#2

Jag kanska var lite luddig, jag menar alltså en funktion som ersätter mellanslag med "_" och åäö med aao etc etc.

PallemanMedlem sedan dec. 2000557 inlägg
#3

Här är ett sätt att göra det på:

<%

	Function MakeWebsafeName(str)

		str = trim(str)
		str = Replace(str, " ", "_")
		str = Replace(str, "å", "a")
		str = Replace(str, "ä", "a")
		str = Replace(str, "ö", "o")
		MakeWebsafeName = str

	End Function

	myFile = "världens bästa bil.jpg"
	Response.Write MakeWebsafeName(myFile)

%>
PatrikBMedlem sedan mars 20002 836 inlägg
#4

Lite snabbt hopplock:

Function MakeWebsafeName(ByVal fileName)

	If Len("" & fileName) = 0 then Exit Function

	fileName = LCase(fileName)

	'## --byt ut mellanslag --
	fileName = Replace(fileName, " ", "_")

	'## --byt ut å --
	fileName = Replace(fileName, "å", "a")

	'## --byt ut ä --
	fileName = Replace(fileName, "ä", "a")

	'## --byt ut ö --
	fileName = Replace(fileName, "ö", "o")

	MakeWebsafeName = fileName

End Function

ngt sådant borde funka alldeles utmärkt.

cya,
PatrikB

daPhilMedlem sedan apr. 2001151 inlägg
#5

Jo precis, men det finns fler tecken än åäö, jag undrade om det fanns någon färdig funktion? Jag orkar inte sitta o skriva en funktion själv som inkluderar alla apostrof-bokstäver, franska skumma saker etc etc..

trexter.comMedlem sedan apr. 20021 203 inlägg
#6

Det kanske finns någon komponent för det? Om det är många olika tecken som ska bytas ut lär funktionen bli ofantligt stor...

:)

PatrikBMedlem sedan mars 20002 836 inlägg
#7

Hur får du filnamnen?
Genom ett inmatningsformulär???

I såfall så kan du ju göra en funktion som går igenom och kolla så att varje boksav är <valid>, dvs a-z, A-Z, 0-9, _
En funktion i javascript som först kollar på klientsidan och sedan en funktion som kollar på server sidan att allt är ifyllt korrekt.

cya,
PatrikB

daPhilMedlem sedan apr. 2001151 inlägg
#8

Det är ett uploadscript som lägger filen på hårddisken och samtidigt döper om filen till ett webbsäkert namn, det riktiga filnamnet lagras samtidigt i en databas. Ingen ska bli nekad att skicka upp en fil, den ska döpas om automatiskt, men det ser ju aldrig användaren eftersom det riktiga filnamnet ligger kvar i db'n och är det som visas....

En funktion som gör det jag vill verkar tyvärr inte finnas och den skulle som sagt bli ofantligt stor om den ska täcka alla tecken som existerar :( jag får hitta på något annat

solbulleMedlem sedan mars 20015 287 inlägg
#9

Hm...

I såfall så kan du ju göra en funktion som går igenom och kolla så att varje boksav är <valid>, dvs a-z, A-Z, 0-9, _

Kan du inte köra meddet då? Samt att den byter ut vilken förekomst som helst med en o samma bokstav, typ -.
Du spara ju ändå det rätta filnamnet i databasen så det spelar väl egentligen ingen roll vad filen heter hos dig?

Iofs så kan det väl inte vara så många olika tecken man kan stöta på? eller?

daPhilMedlem sedan apr. 2001151 inlägg
#10

Det finns mer än ÅÄÖ där ute....

¡¢£°Ë¥?§¨©ª«¬ú®¯°±©˜©¯´µ¶·¸©ˆº»1/43/4¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÅ~ØÙÚÛÜæçèêëïõñÿŒ

JosefMedlem sedan mars 20023 561 inlägg
#11

daPhil skrev:

Det finns mer än ÅÄÖ där ute....

¡¢£°Ë¥?§¨©ª«¬ú®¯°±©˜©¯´µ¶·¸©ˆº»1/43/4¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÅ~ØÙÚÛÜæçèêëïõñÿŒ

:birp Och dessa använder man ofta i filnamn...

trexter.comMedlem sedan apr. 20021 203 inlägg
#12

Vad är det för några idioter som använder tecknet för Copyright när de skapar en fil? Eller är det ett program som slumpar ut tecken?

Jag föreslår nästan att du ser över vad som matas in först istället för vad som ska ersättas....

:)

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#13
Function MakeSafeName(ByVal sString)
	
	Dim i, c, sNewString
	
	sString = Trim(LCase(sString))
	
	Const sSpec = "öåä&üéèáà/\$£*"
	Const sConv = "oaaoueeaa--SLx"
	
	For i = 1 To Len(sSpec)
		sString = Replace(sString, Mid(sSpec, i, 1), Mid(sConv, i, 1))
	Next 'i
	
	For i = 1 To Len(sString)
		c = Mid(sString, i, 1)
		Select Case c
			Case "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", _
			"k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", _
			"v", "w", "x", "y", "z", "_", "-", _
			"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
				sNewString = sNewString & c
			Case Else
				sNewString = sNewString & "x"
		End Select
	Next 'i
	
	MakeSafeName = sNewString
	
End Function

Response.Write MakeSafeName("fkfk#%/%;åäö")
137 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)