Php 如何在strlen内部饰件上仅允许3个数字?

Php 如何在strlen内部饰件上仅允许3个数字?,php,validation,jigoshop,Php,Validation,Jigoshop,我正在使用Jigoshop 1.9.3.1,但我在验证邮政编码时遇到问题 我希望客户只能在邮政编码字段中键入3个数字,因此我更改了邮政编码验证PHP代码: jigoshop_validation.class.php 邮政编码检查类 我换了 if ( strlen( trim( preg_replace( '/[\s\-A-Za-z0-9]/', '', $postcode ))) > 0 ) return false; 与 现在,客户不能键入少于3个号码的邮政编码,但可以键入3个

我正在使用Jigoshop 1.9.3.1,但我在验证邮政编码时遇到问题

我希望客户只能在邮政编码字段中键入3个数字,因此我更改了邮政编码验证PHP代码:

jigoshop_validation.class.php

邮政编码检查类

我换了

if ( strlen( trim( preg_replace( '/[\s\-A-Za-z0-9]/', '', $postcode ))) > 0 ) return false;    

现在,客户不能键入少于3个号码的邮政编码,但可以键入3个以上的号码。我希望他们只能准确地键入3个数字。我该怎么做


另外,由于某些原因,我不打算将Jigoshop更新为最新版本。

您引用的这行代码只是检查无效字符的一种非常愚蠢的方法。如果(preg_match('/[^-\sA-Z0-9]/i',$postcode))返回false,则执行
更好。除此之外,您还需要查看
self::$postcode_regex
数组,看看您在那里得到了什么。我已经在Jigoshop Dashboard中启用了邮政编码验证功能。@NiettheDarkAbsol你能帮我吗?@NiettheDarkAbsol:我在写同样的评论时用了“愚蠢”一词而不是“转储”。如果(preg_match(“#u match(#0-9]{3}#,$postcode postcode)){echo”代码是3个数字,可以;否则{echo“错误代码”}
if ( strlen( trim( preg_replace( '/[\s\-A-Za-z0-9]/', '', $postcode ))) == 0 ) return false;