webForumDet fria alternativet
Logga in / Bli medlem

preg_match problem

PHP

7 svar · 409 visningar · startad av Qimen

Medlem sedan juni 20015 009 inlägg
Trådstart#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);
    }
Medlem 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?

Medlem sedan juni 20015 009 inlägg
#3

Funkar fortfarande inte :(

Medlem 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;
    	}
	}
Medlem 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.

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

Medlem 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";
}
Medlem sedan juni 2002346 inlägg
#8

ajuste =)

385 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
130 ms — deklarationer (db)
124 ms — hämta statistik (db)
128 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)