将 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'] . '/');
我正在使用数组存储正则表达式,如下所示:
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'] . '/');