2011-09-07 80 views
2

我有一个HTML内容列。我想在该列中搜索单词,但只搜索文本,而不是HTML代码。与正则表达式类似的SQLite

例如:

(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的直接?

注:我无法定义函数。

+5

我建议你在你的表格中添加一列包含HTML内容的“纯文本”版本。您必须自己填写此列,但一旦填充后您可以搜索它。 –

+2

仅使用正则表达式的可靠解决方案将非常难以编码。 – NullUserException

+0

SQLite 3,是的。 [extra chars] – Francisc

回答

1

不要用SQLite做。

用你的编程语言,使用SQLite的框架来做到这一点。

在表中,如果您的列有html代码,请为html的数据添加其他列。您必须收集额外列的数据,同时使用框架分析html。

跟踪有关html格式结构的结构的数据,并在额外的列中保存html数据的文本内容。

/<?[^<>]+>?/ 

结帐用正则表达式扫描HTML数据标签上面如何接收数据并写入一个迭代评估标签内容(即,如果一个字符串:

您可以通过简单的正则表达式得到所有标签在结果数组中以“<”开始,它是一个标记,通过使用/<\s*\/\s*[^>]+>/进行扫描,您将看到它是否是结束标记,并通过使用/<\s*[^\/>]+\s*\/\s*>/进行扫描,您将看到它是否为单个封闭标记。有区别的国家确实适用,它是文本内容。

+0

谢谢,JAkk。 [额外字符] – Francisc

0

在SQLite中没有直接做到这一点的好方法(你需要构建一个SQLite扩展来解析HTML并让你像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.