将 REGEX 存储在数组 PHP 中

Storing REGEX in array PHP

我正在使用数组存储正则表达式,如下所示:

private $rules = ['usuario' => ['regexp' => "^(?![_.])(?!.*[_.]{2})[a-zA-Z0-9._]+(?<![_.])$", 'length' => ['max'=>'30','min'=>'4']],
    'email' => ['length' => ['max'=>'70','min'=>'5']],
    'contrasena' => ['length' => ['max'=>'70','min'=>'4']]
];

当我尝试时:

echo '/' . $this->rules['usuario']['regexp'] . '/';

我得到了:

/^(?![_.])(?!.*[_.]{2})[a-zA-Z0-9._]+(?

任何人都可以解释这种行为吗?

原因是正则表达式中有<个符号,在浏览器中它们被解释为标签。为避免此类行为,您可以通过 htmlspecialchars:

转义此类字符
echo htmlspecialchars('/' . $this->rules['usuario']['regexp'] . '/');