webForumDet fria alternativet

mellanslag

12 svar · 653 visningar · startad av tanten

tantenMedlem sedan nov. 20051 596 inlägg
#1

Har ett adminscript där användaren oftast kopierar det som ska in i databasen från en annan sida. Upptäckt att han väldigt lätt får med ett eller flera mellanslag i början eller slutet av det han kopierar. Hur får man bort mellanslagen redan här?

@ndersMedlem sedan juni 200032 969 inlägg
#2

trim()

tantenMedlem sedan nov. 20051 596 inlägg
#3

Tack!

PeddaMedlem sedan juni 20006 032 inlägg
#4

Jag använder alltid trim() på värden ifrån formulär innan jag lägger in i databasen.
T.ex om du kollar om ett fält inte är ifyllt med empty($_POST['namn']) så returnerar den att man har fyllt i någonting även om det bara är ett mellanslag man har skrivit.

Så jag kör trim() på alla variabler så här innan jag kontrollerar om fälten är tomma och lägger in i databasen:

// rensa bort blanksteg i början och slutet
foreach($_POST as $key => $val){
	$_POST[$key] = trim($val);
}
tantenMedlem sedan nov. 20051 596 inlägg
#5

Eftersom det är travtränare det handlar om och att de nästan uteslutande kopierar från en sida som denna när de ska mata in en häst de har i träning i databasen. http://www.travsport.se/shestinfo?kommando=visaHerstamning&hestId=80646
Är det då något mer jag bör tänka på som kan bli fel. Hitentills har det bara varit detta med mellanslag som orsakat problem när en bild ska visas. Bilden döps efter hästens namn och det har då hänt att det blivit t.ex.<img src="jarvso .jpg"> med mellanslaget före . Men det blev bra med trim
Alla tips mottas tacksamt så det blir rätt från början.
Mamma, pappa, morfar kopieras in med stora bokstäver, vilket kanske inte är så bra t.ex. Kan det bli problem?

xox-seMedlem sedan maj 200732 inlägg
#6

strtolower konverterar alla tecken till downcase vilket är standard för URL och filnamn på teh inter net

drewMedlem sedan mars 2007845 inlägg
#7

Kolla så inte namnet innehåller otillåtna tecken. Ex åäö kan ibland ge problem i filnamn.

/D

tantenMedlem sedan nov. 20051 596 inlägg
#8

Tar upp den här tråden igen.
Har inte fått det att fungera om en häst heter t.ex. Bacardi B.M.W.

$pappa = trim(ucwords(strtolower($_POST['pappa'])));

Det blir då små bokstäver av m.w.
Finns det något sätt att få det att fungera...

PeddaMedlem sedan juni 20006 032 inlägg
#9

Du får nog göra en funktion som med regex kollar efter en punkt följt av en bokstav och som ändrar bokstaven till uppercase.

PeddaMedlem sedan juni 20006 032 inlägg
#10

Är inte så bra på RegEx så här är en funktion som använder str_replace istället.

function changeToUpper($word) {
	foreach (range('a', 'z') as $letter) {
	 	$letter = '.' . $letter;
	 	$word = str_replace($letter, strtoupper($letter), $word);
	}
	return $word;
}

$pappa = changeToUpper(trim(ucwords(strtolower($_POST['pappa']))));
tantenMedlem sedan nov. 20051 596 inlägg
#11

Tack så Jätte mycket. Det fungerade jättebra.
Satt och läste i manualen när ditt svar kom och då hittade jag andra namnkombinationer som kanske kommer dyka upp i tabellen. Sådant som McDonand O'Neil.
Men det ser ut som de flesta använder str_replace för det så jag får jobba vidare med det .
Tack än en gång...

PeddaMedlem sedan juni 20006 032 inlägg
#12

Ja, det går ju att bygga på med fler str_replace i funktionen

function changeToUpper($word) {
	foreach (range('a', 'z') as $letter) {
	 	// byt ut alla förekomster av .* till uppercase
	 	$letter1 = '.' . $letter;
	 	$word = str_replace($letter1, strtoupper($letter1), $word);
	 	// byt ut alla Mc* till uppercase t.ex McD
	 	$letter2 = 'Mc' . $letter;
	 	$word = str_replace($letter2, 'Mc' . strtoupper($letter), $word);
	 	// byt ut alla '* till uppercase t.ex 'N i O'Neil
	 	$letter3 = '\'' . $letter;
	 	$word = str_replace($letter3, strtoupper($letter3), $word);
	}
	return $word;
}
tantenMedlem sedan nov. 20051 596 inlägg
#13

Ja jisses... finns ju hur mycket som hellst att str_replace:a men väldigt lätt att göra fel.
Men kul att testa... Lindy's Crown skulle ju se lite halvroligt ut med stort S.
Skriv rätt från början är nog det jag skulle vilja säga till användarna, det finns aldeles för många kombinationer som ska skrivas ut antingen si eller så ... :-)
Mc däremot tar jag med... Tack!

132 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)