---
title: "Bygg om funktion"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/188239-bygg-om-funktion"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Skogiz"
published: "2011-11-11T13:00:38.000Z"
updated: "2011-11-11T15:25:08.000Z"
replies: 5
views: 401
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/188239-bygg-om-funktion"
---

# Bygg om funktion

## #1 — Skogiz, 2011-11-11T13:00Z

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?

Permalänk: https://www.webforum.nu/p/188239

## #2 — metalboy, 2011-11-11T13:51Z

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

```php
if (($component != "irc") && (!is_int($component) || $component < 1 || $component > 4096)) return false;
```

Permalänk: https://www.webforum.nu/p/2288299

## #3 — Skogiz, 2011-11-11T14:05Z

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?

Permalänk: https://www.webforum.nu/p/2288301

## #4 — metalboy, 2011-11-11T14:29Z

Ja... jag hade ju inte testkört koden :$

Men följande verkar funka:

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

Permalänk: https://www.webforum.nu/p/2288304

## #5 — Skogiz, 2011-11-11T15:16Z

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?

Permalänk: https://www.webforum.nu/p/2288308

## #6 — metalboy, 2011-11-11T15:25Z

Testa så får du se ;)

Permalänk: https://www.webforum.nu/p/2288309

---

Tråden på webben: https://www.webforum.nu/amne/php/188239-bygg-om-funktion
