Mam taki kod:

  1. <?php
  2. public function isValid()
  3.    {
  4.        preg_match("/([w]){3,}+s([w]){2,}/i", $this -> recipient_name, $patt);
  5.        
  6.        //for($i = 0; $i < count($patt); $i++)
  7.           //echo $patt[$i][$i];
  8.  
  9.            
  10.        if($patt)
  11.            $blFlag = true;
  12.        else
  13.            $blFlag = false;
  14.            
  15.        preg_match("/([a-z0-9.-_])+@([a-z0-9-.])+.([a-z]{2,4})/i", $this -> recipient_address, $patt2);
  16.        if($patt2)
  17.            $blResult = $blFlag & true;
  18.        else
  19.            $blResult = $blResult & false;
  20.    
  21.        return $blResult;
  22.    }
  23. ?>


I bez znaczenia, czy wpiszę w recipient_name Jacek Kowalski, czy Jacek0Kowalski, funkcja zawsze zwraca true. Drugie wyrażenie działa bezbłędnie. Co jest źle? Plis help!

Edit:

Ok, już działa. Pierwsze wyrażenie zastąpiłem tym:

  1. <?php
  2. preg_match("/([a-z]){3,}+s([a-z]){2,}/i", $this -> recipient_name, $patt);
  3. ?>


Tylko może mi ktoś wytłumaczyć dlaczego \w nie działało? Przecież to klasa odpowiedzialna za słowa tak? A w słowach nie występują cyfry...