SSkogizMedlem sedan feb. 200395 inlägg Frågan#1 Hade problem med ett reguljärt uttryck innan som jag tror är löst.
Däremot får jag inte alls till hur jag ska kunna få till den här funktionen.
function validate_cid($matches) {
$tmp_v = explode(".", $matches);
if (count($tmp_v) < 2) return false;
foreach ($tmp_v as $component) {
$int_val = intval($component);
if (!is_int($int_val) || $int_val < 1 || $int_val > 4096) return false;
}
return true;
}
Jag skulle vilja ha in ett tillägg att antingen är det mellan 1 och 4096 eller innehåller ordet irc
Hur löser man detta bäst?
MmetalboyMedlem sedan jan. 2005953 inlägg Ta bort raden
$int_val = intval($component);
Den behövs inte, eftersom du ändå kollar om värdet är ett heltal med is_int().
Då får du skriva om if-satsen så du kollar värdet på $component istället, och då lägger du bara till en kontroll för irc också.
if (($component != "irc") && (!is_int($component) || $component < 1 || $component > 4096)) return false;
SSkogizMedlem sedan feb. 200395 inlägg nja... jag får inte din kod att fungera.
Värdet jag kollar ska alltså kunna vara vara irc.1034 eller 234.1122 för att ta ett exempel
Nu smäller det väl på att det blir false så fort det inte är irc och man kör med siffror där?
MmetalboyMedlem sedan jan. 2005953 inlägg Ja... jag hade ju inte testkört koden :$
Men följande verkar funka:
function validate_cid($cid) {
$parts = explode('.', $cid);
if (count($parts) < 2) return false;
foreach($parts as $part) {
$x = intval($part);
if ($part!='irc' && ($x < 1 || $x > 4096))
return false;
}
return true;
}
(Jag döpte om variablerna lite för att det skulle funka bättre i mitt huvud...)
SSkogizMedlem sedan feb. 200395 inlägg Nu känner jag mig hemsk (eller är jag bara dum, kan vara det också ;)) men blir det inte false nu så fort irc inte står med?