2011-09-07 79 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.