所以,这可能不像我希望的那样在新的工作时间之后看起来如此直截了当...因此,为什么我在浏览其他人之后写自己的问题无济于事。它通常会引发我一个关于PHP与JS正则表达式兼容性或转换的问题并且不适用 - 据我所见,随时纠正我 - 对我的问题。
我的目标是创建一个自定义验证规则的JSON数组,以便在JS" formvalidation"插件,在PHP中使用数组生成服务器端(使用CI作为MVC框架),in which a reference to the required structure can be found here。
这个自定义验证规则数组当前在PHP控制器中生成,JSON编码,传递给视图,然后通过JSON.parse解析为变量以获取所需的基于对象的结构而不是串;这很容易就行。
这里是踢球者和我被困的地方; 验证规则中的一个参数可以是正则表达式模式。在PHP数组中,它必须保持在引号内,但是当它命中JS时,需要从引号中取出它以成为正则表达式对象(?不确定这是否是正确的术语)。
我已经研究过使用RegExp
对象来创建一个新的正则表达式;例如var x = new RegExp("string","/modifier");
。但问题来自于当你不知道密钥是什么时,正则表达式嵌套在JSON数组中。
我目前的结构如下:
PHP验证规则数组,根据插件文档所需的结构:
$formValidationConfig = array(
// Validation rules to be passed to the formvalidation plugin
'name' => array(
// Optional
// Element name as the array key
// Formatting of the array content:
// http://formvalidation.io/settings/#settings-structure
// [key] Validators (necessary wording) => [sub array]
// [key] Validation Rule => [sub array]
// [key] Validation Rule Name => [val] Validation Parameter :: optional pair
// [key] Error Message => [val] Message Content
'validators' => array(
'notEmpty' => array(
'message' => 'The full name is required'
),
'regexp' => array(
'regexp' => '/^[a-zA-Z\\\s]+$/', // Optional
// The triple backslash is necessary due to JS and JSON both parsing the array
'message' => 'The full name can only consist of alphabetical characters'
),
'stringLength' => array(
'max' => 50, // Optional
'message' => 'The full name must be less than 50 characters'
)
)
)
);
// -----
// Further down the page (scroll)
// -----
$page = array(
'formValidationConfig' => json_encode( $formValidationConfig )
);
用于解析数组的Javascript:
var validationRules = JSON.parse( '<?=$formValidationConfig;?>' );
... aaa和JSON输出:
Object
name: Object
validators: Object
notEmpty: Object
message: "The full name is required"
regexp: Object
message: "The full name can only consist of alphabetical characters"
regexp: "/^[a-zA-Z\s]+$/"
stringLength: Object
max: 50
message: "The full name must be less than 50 characters"
除了正则表达式之外,它适用于所有内容。在正确设置所有对象和属性的情况下,显然吧......正则表达式。
我有一些想法:
拜托,请告诉我一些知识并告诉我哪里出错了!
提前致谢。 :)