我有以下代碼用于使用正則表達式規則匹配電子郵件地址。它運作良好,但我最近注意到它似乎與“空白”電子郵件地址匹配。if (preg_match("/.* <.*@.*\..*>/i",$this->to,$matches)) { $this->email_to = preg_replace("/.*<(.*)>.*/","$1",$this->to);} else { $this->email_to = $this->to;}我對 preg_match 的理解是:-查找任何字符,除了換行符<任何字符@anything.anything >不區分大小寫?按照這些規則,如果有人可以提供一些指導,我無法完全弄清楚為什么它與空白/沒有電子郵件地址匹配。謝謝你。
2 回答
守著星空守著你
TA貢獻1799條經驗 獲得超8個贊
不需要preg_match + preg_replace。
if (empty($this->to)) {
$this->email_to = 'Is empty'; # assign what you want
} elseif (preg_match("/<(.+?@.+?\..+?)>/", $this->to, $matches)) {
$this->email_to = $matches[1];
} else {
$this->email_to = $this->to;
}
子衿沉夜
TA貢獻1828條經驗 獲得超3個贊
我不知道它為什么會這樣,但一個簡單的解決方案是詢問字符串是否為空白
if (preg_match("/.* <.*@.*\..*>/i",$this->to,$matches)) {
if ($matches != ""){
$this->email_to = preg_replace("/.*<(.*)>.*/","$1",$this->to);
} else { $this->email_to = $this->to; }
} else {
$this->email_to = $this->to;
}
- 2 回答
- 0 關注
- 123 瀏覽
添加回答
舉報
0/150
提交
取消
