我有一个包含HTML内容的专栏。我想在该列中搜索单词,但只搜索文本,而不是HTML代码。
例如:
(1) <p class="last">First time I went there...</p>
(2) This is a <em>very</em> subtle colour.
(1)搜索last
找不到它,因为它是一个类名,而不是内容。
(2)搜索very subtle
会找到它,忽略HTML
这可以直接用SQLite吗?
注意:我无法定义函数。
答案 0 :(得分:1)
不要使用SQLite。
使用您的编程语言,使用SQLite的框架。
在包含html代码的列的表中,为有关html的数据添加其他列。当您使用框架分析html时,您将不得不收集额外列的数据。
跟踪有关html格式所具有的结构的数据,并将额外的列保存为html数据的文本内容。
您可以通过简单的REGEX获取所有标签:
/<?[^<>]+>?/
通过扫描带有上述正则表达式的标签的html数据来检查如何接收数据,并为标记内容编写迭代评估(即,如果结果数组中的字符串以“&lt;”ita标记开头,通过使用/<\s*\/\s*[^>]+>/
进行扫描,您将看到它是否为结束标记,并通过/<\s*[^\/>]+\s*\/\s*>/
扫描它,您将看到它是否是单个封闭标记。如果没有适用的差异状态,则为文字内容。
答案 1 :(得分:0)
直接在SQLite中执行此操作并不是很好的方法(您需要构建一个解析HTML的SQLite扩展,让您像MSSQL的XML字段类型一样搜索它)
最好的办法是解析代码中的HTML并将所有文本写入单独的列中,以便在评论中以@Kevin的形式进行搜索。
E.g。
ID | HTML | Text
---------------------------------------------------------------------------
1 | <p class="last">First time ...</p> | First time ...
2 | This is a <em>very</em> subtle colour. | This is a very subtle colour.