gpt4 book ai didi

php - 检测字符串是否包含 html yii2

转载 作者:行者123 更新时间:2023-12-04 14:30:50 25 4
gpt4 key购买 nike

我在 yii2 中有一个字符串类型的输入。我想检测发送的字符串以查看它是否包含 HTML,然后阻止用户输入 HTML 标记。yii2 中是否有包含客户端验证器的验证器?

编辑

检测脚本标签的高效正则表达式如何?

最佳答案

继续工作 2 小时后,我找到了使用自定义验证器的解决方案。这是我对这个问题的解决方案:

<?php
/**
* User: Behzad
* Date: 1/10/2016
* Time: 6:31 PM
*/
namespace app\components;

use yii\validators\Validator;

class NoScriptValidator extends Validator
{
public function init()
{
parent::init();
$this->message = 'لطفا رشته صحیح وارد نمایید';
}

public function validateAttribute($model, $attribute)
{
$value = $model->$attribute;
if (strpos($value, '<script') !== false) {
$model->addError($attribute, $this->message);
}
}

public function clientValidateAttribute($model, $attribute, $view)
{
$message = json_encode($this->message, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
return <<<JS
if(value.indexOf("<script") >= 0){
messages.push($message);
}
JS;
}
}
?>

这是我模型的规则函数:

public function rules()
{
return [
[['title', 'language_id', 'project_type_id', 'text_type_id', 'description', 'deadline_day', 'deadline_time', 'doing_way_id', 'pawn_money', 'project_status', 'offerer_id', 'creation_date'], 'required'],
[['language_id', 'project_type_id', 'text_type_id', 'pages', 'deadline_day', 'deadline_time', 'doing_way_id', 'user_id', 'pawn_money', 'project_status', 'offerer_id', 'creation_date'], 'integer'],
[['is_group'], 'boolean'],
[['title'], 'string', 'max' => 128],
[['description'], 'string', 'max' => 1024],
[['file', 'template'], 'string', 'max' => 32],
['title', NoScriptValidator::className()],
['proj_file', 'file', 'extensions' => ['zip', 'rar', 'doc', 'docx', 'pdf', 'jpg', 'png'], 'maxSize' => 1024 * 1024 * 2],
['doc_template', 'file', 'extensions' => ['zip', 'rar', 'doc', 'docx', 'pdf', 'jpg', 'png', 'xls', 'xlsx'], 'maxSize' => 1024 * 1024 * 2],
];
}

关于php - 检测字符串是否包含 html yii2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34705523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com