Symfony3 - 如何验证 HTML 标签
Symfony3 - How to validate HTML tags
通过使用 Symfony 验证器
如何防止某些 HTML 标签,例如
<input></input>
<textarea><textarea>
在输入字段中输入并保存在数据库中?
您可以在实体的 text/string 属性上使用正则表达式断言。例如,这应该阻止字符串中的任何 HTML 标记:
// src/Entity/Thing.php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class Thing
{
/**
* @Assert\Regex(
* pattern="/<[a-z][\s\S]*>/i",
* match=false,
* message="Your text cannot contain HTML"
* )
*/
protected $text;
}
这应该检查输入和文本区域元素:
// src/Entity/Thing.php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class Thing
{
/**
* @Assert\Regex(
* pattern="/<(?=.*? .*?\/ ?>|textarea|input)[a-z]+.*?>|<([a-z]+).*?<\/>/i",
* match=false,
* message="Your text cannot contain certain HTML tags"
* )
*/
protected $text;
}
您也可以在 setter 函数中使用 strip_tags
php 函数来阻止 html 标签,您也可以将一些允许的标签传递给此函数。
public function setText()
{
$this->text = strip_tags($text);
return $this;
}
通过使用 Symfony 验证器
如何防止某些 HTML 标签,例如
<input></input>
<textarea><textarea>
在输入字段中输入并保存在数据库中?
您可以在实体的 text/string 属性上使用正则表达式断言。例如,这应该阻止字符串中的任何 HTML 标记:
// src/Entity/Thing.php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class Thing
{
/**
* @Assert\Regex(
* pattern="/<[a-z][\s\S]*>/i",
* match=false,
* message="Your text cannot contain HTML"
* )
*/
protected $text;
}
这应该检查输入和文本区域元素:
// src/Entity/Thing.php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class Thing
{
/**
* @Assert\Regex(
* pattern="/<(?=.*? .*?\/ ?>|textarea|input)[a-z]+.*?>|<([a-z]+).*?<\/>/i",
* match=false,
* message="Your text cannot contain certain HTML tags"
* )
*/
protected $text;
}
您也可以在 setter 函数中使用 strip_tags
php 函数来阻止 html 标签,您也可以将一些允许的标签传递给此函数。
public function setText()
{
$this->text = strip_tags($text);
return $this;
}