webForumDet fria alternativet

rensa bort allt förutom [tecken]

PHP

4 svar · 270 visningar · startad av Matti

Medlem sedan dec. 19996 592 inlägg
Frågan#1

Tjoho

Jag håller på med ett litet registreringsformulär. Jag har slagit ihop all data från formuläret till en variabel, typ, $data. Ur den vill jag rensa bort alla tecken förutom a-z (versaler får förekomma), 0-9, bindesstreck, punkt och komma.

Det känns som om reguljära uttryck skulle kunna användas.. men hur?

Annars kan jag också använda en lösning där ett felmeddelande skapas om något "specialtecken" (förutom de som listades ovan) förekommer i $data. Men jag kommer inte på hur jag ska göra.

(red: jag kan ju självklart skriva in alla tecken som inte får förekomma manuellt, men det skulle vara betydligt bättre där man bara skriver in de tecken som får förekomma)

Medlem sedan juni 20001 251 inlägg
#2

Finns flera lösningar, här är en.

<?php
$data="Matt!!!i har ma1121ssor med ost. &&::Osten var gul, ty???ckte äxpårten Matti.";

echo "Före: ".$data."<br><br>";

$data=ereg_replace("[^,\\.A-Za-z0-9-]","",$data);

echo "Efter: ".$data;
?>
Medlem sedan dec. 19996 592 inlägg
#3

Tack, tack.

Medlem sedan dec. 19996 592 inlägg
#4

Hum. Varför rensas inte " bort?

for ($i = 0; $i < $gaah; $i++) {
$_POST[$i]=ereg_replace('[^åÅäÄöÖ,\.A-Za-z0-9-]',"",$_POST[$i]);

}

" blir till \" till när innehållet i $_POST skrivs till en textfil. Testade stripslashes men fick inte det att fungera..?

Medlem sedan mars 20007 896 inlägg
#5

Ditt mönster är lite fel, det borde se ut så här:

"[^åÅäÄöÖ,\.A-Za-z0-9\-]"

Angående "-problemet så har jag inget svar varför det blir så, men jag har för mig att jag alltid är tvungen att använda str_replace() på ".

252 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)