webForumDet fria alternativet

kontroll

7 svar · 252 visningar · startad av stevenet

stevenetMedlem sedan juni 2000985 inlägg
#1

Jag skulle vilja kontrollera $text, så att det endast innerhåller A-Za-z0-9.

I ett internt meddelandesystem jag håller på med, har jag ett mindre problem. När man svarar på ett meddelande, som tidigare besvarats, blir det "SV: SV: ämne". Hur gör jag för att $amne bara skall innehålla ett "SV:", detta för att slippa en oändlig lista med "SV:".

Jag vill även kunna skriva ut domändelen (webforum.nu) ur en epostadress, som vi kan kalla $epost.

------------------
SteveNet - stevenet@webmarkit.net
Stjäl inte mer än vad du kan bära, staten hatar konkurrens.

nielsMedlem sedan juli 2000215 inlägg
#2

Allt detta kan man göra med regualt expression. På www.phpbuilder.com finns en mycket bra column om dessa.

/Niels

------------------
www.bosma.space2u.com

nicclasMedlem sedan feb. 20001 061 inlägg
#3

Prova detta:

<?
$text="qwe23";
if(preg_match("/^([A-Za-z0-9]+)$/",$text))
  echo "ok\n";
else
  echo "fel\n";

$text="nicclas@spray.se";
if(!preg_match("/^SV:/",$text))
  $text="SV: ".$text;
echo "$text\n";

$text="SV: nicclas@spray.se";
if(!preg_match("/^SV:/",$text))
  $text="SV: ".$text;
echo "$text\n";

$text="nicclas@spray.se";
preg_match("/@[\w&#0124;\.]+/",$text,$out);
echo substr($out[0],1)."\n";
?>

/nicclas - http://www.nic-sys.se

[Redigerat av nicclas den 05 sep 2000]

stevenetMedlem sedan juni 2000985 inlägg
#4

Tack! nicclas, borde de inte utnämna dig till moderator snart?

------------------
SteveNet - stevenet@webmarkit.net
Stjäl inte mer än vad du kan bära, staten hatar konkurrens.

RobbanMedlem sedan dec. 19992 272 inlägg
#5

Några kommentarer (inte menade som kritik):

if(preg_match("/^([A-Za-z0-9]+)$/",$text))

Blir något enklare (och troligen lite snabbare) om man vänder på problemet. Att i stället för att kolla så att alla är giltiga, leta efter exakt ett ogiltigt tecken (resultatet blir ju detsamma).

if (ereg('[^A-Za-z0-9]',$text))
  // Fel
else
  // Ok

preg_match("/@[\w|\.]+/",$text,$out);
echo substr($out[0],1)."\n";

Här kan man ju även använda explode() om man vill.

list ($user, $domain) = explode('@', $text);
echo "$domain\n";

Går snabbare (enligt manualen) eftersom inga regexp används ö.h.t.

------------------
Robban < robban@lipogram.com >

[Redigerat av Robban den 06 sep 2000]

nicclasMedlem sedan feb. 20001 061 inlägg
#6

Jo, explode är ju smartare. Var så inställd på att träna mig på reg.exp:ar att jag inte såg de andra möjligheterna. :)
Moderator = Städare ? Nej, tack.

/nicclas - http://www.nic-sys.se

[Redigerat av nicclas den 06 sep 2000]

stevenetMedlem sedan juni 2000985 inlägg
#7

"SV-funktionen" fungerar inte, den skriver ut samtliga SV:. Finns det något sätt att bara rensa ut alla SV: i en sträng vid namn $epost.
$epost = "SV: SV: SV: hej";

------------------
SteveNet - stevenet@webmarkit.net
Stjäl inte mer än vad du kan bära, staten hatar konkurrens.

nicclasMedlem sedan feb. 20001 061 inlägg
#8

Jo, som jag hade tanke mig, sa skall du gora en funktion som bara lagger till SV: om det ar sa att SV: inte redan finns...

Vill du dessutom rensa bort alla SV: sa kanske du kan gora str_replace till "tomt" pa dessa forst...

/nicclas - http://www.nic-sys.se (Jobbigt med aao i Italien :) )

Genererad på 518 ms · cache AV · v20260730165559-full.f96bc7eb