2011-09-07 4 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) HTML 무시하고, 그것을 발견 할 것이다 very subtle을 검색

이 직접 SQLite는 함께 할 수 있습니까?

참고 : 기능을 정의 할 수 없습니다.

+5

HTML 컨텐트의 "일반 텍스트"버전을 포함합니다. 이 열을 직접 채워야하지만 일단 채워지면이 열을 검색 할 수 있습니다. –

+2

regex만을 사용하는 신뢰할 수있는 솔루션은 코드 작성이 매우 어려울 것입니다. – NullUserException

+0

SQLite 3, 예. – Francisc

답변

1

SQLite로하지 마십시오.

프로그래밍 언어, 즉 SQLite를 사용하는 프레임 워크에서 수행하십시오.

html 코드가있는 열이있는 표에서 html에 대한 데이터 열을 추가하십시오. 프레임 워크로 html을 분석하는 동안 여분의 열에 대한 데이터를 수집해야합니다.

html 형식의 구조에 대한 데이터를 추적하고 html 데이터의 텍스트 내용을 추가 열에 저장합니다. 위의 정규 표현식으로 태그의 HTML 데이터를 스캔하여 데이터를 수신하는 방법

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

체크 아웃하고 (즉, 문자열의 경우 태그의 콘텐츠에 대한 반복 평가를 쓰기 :

당신은 간단한 REGEX 모든 태그를 얻을 수 있습니다 결과 배열에서 "<"it'sa 태그로 시작하여 /<\s*\/\s*[^>]+>/으로 스캔하여 종료 태그인지 확인하고 /<\s*[^\/>]+\s*\/\s*>/으로 스캔하면 하나의 닫힌 태그인지 확인할 수 있습니다. 차별화 된 국가가 적용됩니다. 텍스트 콘텐츠입니다.

+0

감사합니다. JAkk. [여분의 문자] – Francisc

0

SQLite에서 직접 수행하는 좋은 방법은 없습니다 (HTML을 구문 분석하고 MSSQL의 XML 필드 유형처럼 검색 할 수있는 SQLite 확장을 작성해야합니다).

가장 좋은 방법은 코드에서 HTML을 구문 분석하고 모든 텍스트를 별도의 열에 써서 @Kevin이 주석에서 제안하는대로 검색 할 것입니다.

예.

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.