webForumDet fria alternativet

Bygg om funktion

PHP

5 svar · 394 visningar · startad av Skogiz

Medlem 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?

Medlem sedan jan. 2005953 inlägg
#2

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;
Medlem sedan feb. 200395 inlägg
#3

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?

Medlem sedan jan. 2005953 inlägg
#4

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...)

Medlem sedan feb. 200395 inlägg
#5

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?

Medlem sedan jan. 2005953 inlägg
#6

Testa så får du se ;)

260 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)