在我最近的PHP项目中,我需要实现以逗号分隔的标记(可搜索)(类似于此网站或类似WordPress中的内容)。检测和删除不必要的字符或标签的智能方法是什么?抛开XSS问题,首先,如果用户输入HTML(或其他标签)而不是纯文本,我需要清理和提取文本。
例如:
If user inputs <b>sdfasdf</b>, <a href="something">sdfsdfsdf</a>, <sdfsdfsdf
It should strip out all the unnecessary characters and tags and only plain text should be saved in database.
我在WordPress中尝试了它,并且非常聪明地发现这个加上自动提取文本。
我的问题:
是否有可用于此任务的开源库,我可以将其集成到我的项目中。我已经完成了一些关于此的功课,但 * htmlentities(),strip_tags(),HTML Purifier * 等似乎不适合这项任务。或者确实需要构建我自己的库?
有人可以指导我吗?
谢谢!
答案 0 :(得分:0)
除了删除<b>sdfasdf</b>, <a href="something">sdfsdfsdf</a>
中的“完整”标记(标记语言元素)之外,
您还可以删除“禁止”字符,例如“&lt;”,“&gt;”和“&amp;” (使用preg_replace
等),并将多个空格折叠到一个空格中(也使用preg_replace
)。
请记住,它们仅用作标记(关键字),因此在这里使用有限的字符集是可以接受的。在堆栈中
例如,溢出只允许在标签中使用字母,数字和连字符。
答案 1 :(得分:0)
我会以相反的方式看待这一点。什么输入是合法的?标签名称中允许哪些字符?回答这些问题我将使用正则表达式构建服务器端的合法字符白名单,在UI中陈述规则,并简单地拒绝符合要求的输入。
将无效的inpu按摩到有效,很少是一个好主意。
标签中允许的字符通常是字母数字+短划线和下划线。有些网站也允许空间。