首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表单中不接受域.company

表单中不接受域.company
EN

Stack Overflow用户
提问于 2015-11-06 19:00:11
回答 3查看 89关注 0票数 0

我正在使用Joomla的JSN统一插件来接收电子邮件,但它不接受.company域作为有效域。它接受通常的域名(com,net,org,info,biz,...),但不接受像.company这样的域名。

现在,我真的没有使用PHP的经验,因为我更喜欢JavaScript,但根据我不太了解的知识,我的问题的解决方案可能在form.php文件中,所以这里是代码的一部分。

PHP:

代码语言:javascript
复制
private function _fieldEmail($post, $fieldIdentifier, $fieldTitle, &$validationForm)
    {
        $postFieldIdentifier = isset($post[$fieldIdentifier]) ? $post[$fieldIdentifier] : '';
        $postFieldIdentifier = (get_magic_quotes_gpc() == true || get_magic_quotes_runtime() == true) ? stripslashes($postFieldIdentifier) : $postFieldIdentifier;
        $postEmail = $postFieldIdentifier;
        if ($postEmail)
        {
            $regex = '/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,6})$/';
            if (!preg_match($regex, $postEmail))
            {
                $validationForm[$fieldIdentifier] = JText::sprintf('JSN_UNIFORM_FIELD_EMAIL', $fieldTitle);
            }
            else
            {
                return $postFieldIdentifier ? $postFieldIdentifier : "";
            }
        }
        else
        {
            return $postFieldIdentifier ? $postFieldIdentifier : "";
        }

    }

有没有人能帮我一下?

谢谢。

编辑:我尝试将正则表达式的值从2,6改为2,但仍然没有变化。

请看php fiddler这里:http://viper-7.com/CqxAMZ

EN

回答 3

Stack Overflow用户

发布于 2015-11-06 19:03:17

您应该像这样替换正则表达式:

代码语言:javascript
复制
$regex = '/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,})$/';

接受大于1的任何大小的域。现在它的大小限制在2到6之间。有关这个主题的更多信息,请参阅http://www.regular-expressions.info/repeat.html

票数 3
EN

Stack Overflow用户

发布于 2015-11-06 19:03:04

在末尾将{2,6}更改为{2,7}

这表明regex的最后一部分应该包含2到7个字符("company“超过了6个字符的限制)。

票数 1
EN

Stack Overflow用户

发布于 2015-11-06 19:25:57

替换:

代码语言:javascript
复制
$regex = '/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,6})$/';
if (!preg_match($regex, $postEmail))
{
    $validationForm[$fieldIdentifier] = JText::sprintf('JSN_UNIFORM_FIELD_EMAIL', $fieldTitle);
}

通过以下方式:

代码语言:javascript
复制
if (!filter_var($postEmail, FILTER_VALIDATE_EMAIL)) {
    $validationForm[$fieldIdentifier] = JText::sprintf('JSN_UNIFORM_FIELD_EMAIL', $fieldTitle);
}

电子邮件验证比单行正则表达式更复杂。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33565298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档