webForumDet fria alternativet

preg_match problem

7 svar · 409 visningar · startad av Qimen

QimenMedlem sedan juni 20015 009 inlägg
#1

Jag försöker med en funktion i min klass kolla om en e-post adress är godkänd.

	function valid_value_2($string)
    {
        return (bool)preg_match('/(^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+([a-z]{2,3}$)', $string);	
    }

Sedan i funktionen där jag vill använda den försöker jag köra med:

		if (!$this->valid_value($username) || !$this->valid_value_2($email))
return false;

Jag har en annan funktion som kollar användarnamnet och den funkar redan. Problemmet med den andra är att den inte ger något fel men den avbryter ändå. Någon som ser något fel?

btw, nu när jag ändå frågar. Kan man "bygga ihop" mina två funktioner valid_value och valid_value2 till en men så att de ändå gör rätt?
valid_value ser ut så här:

    function valid_value($string)
    {
        return (bool)preg_match('/(^[a-zåäöA-ZÅÄÖ0-9_-]{4,32}$)/i', $string);
    }
PeeerMedlem sedan mars 20025 907 inlägg
#2

Re: preg_match problem

function valid_value($string,$value)
{
	switch($value){
		case 1:
			return (bool)preg_match('/(^[a-zåäöA-ZÅÄÖ0-9_-]{4,32}$)/i', $string); 
			break;
		case 2:
			return (bool)preg_match('/(^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+([a-z]{2,3}$)', $string);    
			break;
		default:
			return false;
	}
}

if (!$this->valid_value($username,1) or !$this->valid_value($email,2))
	return false;

Kanske?

QimenMedlem sedan juni 20015 009 inlägg
#3

Funkar fortfarande inte :(

QimenMedlem sedan juni 20015 009 inlägg
#4

Jag fick lösa e-postbiten med eregi istället. Då funkar det.

	function valid_value($string,$value)
	{
    	switch($value){
        	case 1:
           		return (bool)preg_match('/(^[a-zåäöA-ZÅÄÖ0-9_-]{4,32}$)/i', $string); 
            	break;
        	case 2:
            	return (bool)eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+([a-z]{2,3}$)", $string);
            	break;
        	default:
            	return false;
    	}
	}
pongoMedlem sedan aug. 200325 inlägg
#5

Detta skall fungera:

return (bool)preg_match('/^([_.0-9a-z-])+@([0-9a-z][0-9a-z-]+.)+([a-z]{2,3}$)/', $string);

Du hade missat: / i slutet av regex, en avslutande parantes samt att Du hade satt ^ innanför första parantesen.

WiZzLeRMedlem sedan juni 2002346 inlägg
#6

om

function valid_value($string)
    {
        return (bool)preg_match('/(^[a-zåäöA-ZÅÄÖ0-9_-]{4,32}$)/i', $string);
    }

är ogiltigt. hur gör jag ett error meddelande till det?

MatteMedlem sedan aug. 20002 975 inlägg
#7

Är det något sånt här du menar ?

if ( !valid_value("en sträng") ) {
   echo "Ett felmeddelande";
}
WiZzLeRMedlem sedan juni 2002346 inlägg
#8

ajuste =)

127 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)