Symfony3 - Как проверить теги HTML
С помощью валидаторов Symfony
Как предотвратить некоторые HTML-теги, такие как <input></input>
<textarea><textarea>
от ввода в поле ввода и сохранения в базе данных?
2 ответа
Решение
Вы можете утверждать, используя регулярные выражения в свойствах текста / строки в вашей сущности. Например, это должно блокировать любые теги 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;
}
Это должно проверить элементы input и textarea:
// 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]+).*?<\/\1>/i",
* match=false,
* message="Your text cannot contain certain HTML tags"
* )
*/
protected $text;
}
Также вы можете использовать strip_tags
Функция php в вашей функции set для предотвращения html-тегов, также вы можете передать некоторые разрешенные теги в эту функцию.
public function setText()
{
$this->text = strip_tags($text);
return $this;
}