PHP - Problem med integer/char

Trädvy Permalänk
Medlem
Plats
Falun
Registrerad
Okt 2001

PHP - Problem med integer/char

Hej
Jag har kommit till en punkt där jag kört fast i en funktion jag försöker konstruera. Funktionen är tänkt att validera en variabel beroende på vad som mer defineras.
Funktionen skall anropas med validera_input($variabel,"char(32)")
där char(32) är vad jag vill $variabel ska vara. Jag kollar om det är char jag vill ha eller int(*) och därefter hur många som är maxantalet tecken (32)

Nog med det, här är iaf en exempelkod:

<?php $value="hejhopp"; $var="char(32)"; $sub=substr; if(preg_match("/^[a-zA-Z0-9]{1,32}$/",$value)){ echo "TRUE<br>"; } else{ echo "FALSE<br>"; } echo substr($var,5,-1)."<br>"; if(preg_match("/^[a-zA-Z0-9]{1,substr($var,5,-1)}$/",$value)){ echo "TRUE<br>"; } else{ echo "FALSE<br>"; } ?>

Den första if-satsen blir TRUE medans den andra blir FALSE
Den enda skillnaden är att i den första är maxlängden satt med värdet 32 och i den andra så har jag en substr som tar fram värdet 32 genom att köra substr($var,5,-1)
jag tycker att det bör bli samma då substr($var,5,-1) blir just 32
Men det verkar som om att preg_match inte tycker om värdet på substr($var,5,-1) som är urklippt från en text och inte en integer från början.

Så hur gör man om värdet från substr($var,5,-1) till en integer som preg_match gillar?

Jag har testat med intval(substr($var,5,-1)) utan resultat.
Adderar jag något på själva substr($var,5,-1) så funkar det rent matematiskt men ändå inte i preg_match

Vad gör jag för fel?

MVH Niclas

EDIT:
Såg nu att
if(is_int(intval(substr($var,5,-1)))){ echo "TRUE"; }
är TRUE
utan intval() så blir det FALSE
Konstigt att det inte fungerar i preg_match för mig :/

EDIT2:
Okej, har sett felet nu, i preg-matchen så skulle jag konkatenera ihop regex'n, annars funkade det ju inte.
Såhär alltså:

preg_match("/^[a-zA-Z0-9]{1,".substr($var,5,-1)."}$/",$value)

Har bytt namn från: nulleman ~ Blogg: http://skorpion.se
MacBook Pro: 15.4' ~ 1.83GHz ~ 1512MB RAM ~ 80GB HDD
Medlem i signaturen blodtörstiga Appleanvändare