2015-02-06 53 views
1

我有一個模型,其中包含一些其他字段的電子郵件。 我想在Yii中CGridView的高級搜索的自定義過濾器應用時,僅列出無效的電子郵件ID(使用正則表達式'^[A-Z0-9._%-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$'在YII中的CGridView中創建自定義高級搜索過濾器

注:我不想在CGridView添加任何列

+0

這不是有效的電子郵件不會忽略的正則表達式;這看起來更像'(?:[a-z0-9!#$%&'* +/=?^ _ \'{|}〜 - ] +(?:\。[a-z0-9!# $%&'* +/=^_} \ {'|}〜 - ] +)* |」(:?[\ x01- \ X08 \ X0B \ X0C \ x0e- \ X1F \ X21 \ x23- \ x5b ???\ x5d- \ 0x7F部分] | \\ [\ x01- \ X09 \ X0B \ X0C \ x0e- \ 0x7F部分)*」)@(:(:[A-Z0-9](:[A-Z0 -9 - ] * [A-Z0-9])\)+ [A-Z0-9](?:?[A-Z0-9 - ] * [A-Z0-9])| \ [( ?:(?: 25 [0-5] | 2 [0-4] [0-9] |?。[01] [0-9] [0-9])\){3}(?: 25 [0-5] | 2 [0-4] [0-9] | [01] [0-9] [0-9] |?[A-Z0-9 - ] * [A-Z0-9] :(?:[\ x01- \ X08 \ X0B \ X0C \ x0e- \ X1F \ x21- \ X5A \ x53- \ 0x7F部分] | \\ [\ x01- \ X09 \ X0B \ X0C \ x0e- \ 0x7F部分]) +)\])';但實際上是[更復雜] [http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html]。 – 2015-02-06 11:07:04

+0

感謝您的糾正,但您能否告訴我我真正問題的答案 – 2015-02-06 11:12:26

+0

對不起,我不是Yii專家,只是想指出電子郵件地址通常不是大寫的字母數字......;如果我有一個,我會寫一個答案。 但是,你的問題並沒有寫得很好。也許添加你已經嘗試過的東西,官方文檔爲什麼失敗了,等等。 – 2015-02-06 11:14:39

回答

0

我希望能幫助你,

你需要幾件事情

  1. 在你的町的列過濾行冰...(我建議你爲此創建一個新的屬性,如果你想知道更多的原因,請在我的評論中問我。)這當然在cgridview當然是:

    'filter'=> CHtml :: activeCheckBox( $ model,$ attributeEmail)

  2. 您在搜索調用模型的函數中的條件。

假如你有你的搜索裏面準則模型至極,你幫助你過濾你需要的是...

if($this->EMAIL == TRUE) 
{ 
    $criteria->addCondition("\"t\".\"EMAIL\" email NOT LIKE '%[email protected]__%.__%'"); 
} 

爲什麼不使用正則表達式,並作出KISS的方法嗎?更好地閱讀這首...

Sql script to find invalid email addresses

我會很高興聽到您的意見這是個有趣的問題警予Dev的BTW