내용이 html 형식이기 때문에 내용의 처음 몇 글자를 직접 가로채는 것은 당연히 부적절합니다. 그리고 모든 html 형식을 직접 제거한 후 가로채면 원하는 효과를 얻을 수 없습니다. 온라인으로 검색한 후에는 다음 코드를 작성하면 기본 요구 사항을 충족할 수 있습니다. (디버그하기 쉽기 때문에 js로 작성)
var br = {};
br.spTags = ["img","br","hr"];/*쌍으로 표시할 필요가 없는 태그*/
br.contain = function (arr,it){
for(var i=0,len=arr.length;iif(arr[i]==it){
return true; 🎜>}
}
return false;
}
br.subArtc = function(article,worldNum){
var result = []
/*먼저 필수 문자열을 가로채세요. */
var wcount = 0;
var startTags = [],endTags = []
var isInTag =
for(var i=0,len=article.length;i< len;i ){
var w = 기사[i];
result.push(w)
if(w=="<"){
isInTag = true; }
if( !isInTag){
wcount ;
if(wcount==worldNum){
break;
}
if(w=="> "){
isInTag = false;
}
}
/*문자열 처리*/
var j=0;
isInTag = false;
var isStartTag = true ;
var tagTemp = "";
while(jw = 결과[j]
if(isInTag){
if(w==">" || w= =" " || w=="/"){
isInTag = false
if(isStartTag){
startTags.push(tagTemp)
endTags.push (tagTemp)
}
tagTemp = "";
}
if(isInTag){
tagTemp =w; if(w= ="<"){
isInTag =
if(result[j 1]=="/"){
isStartTag =
j
}else{
isStartTag = true;
}
}
j ;
}
/*쌍으로 표시할 필요가 없는 img, br 및 기타 태그 제거*/
var newStartTags = [] ;
for(var x=0,len=startTags.length;xif(!br.contain(br.spTags,startTags[x]) ){
newStartTags.push(startTags[x]);
}
}
/*끝 태그 추가 없음*/
var unEndTagsCount = newStartTags.length
while(unEndTagsCount>0 ){
result.push("<");
result.push("/")
result.push(newStartTags[unEndTagsCount-1]); result.push("> ;");
unEndTagsCount--
}
return result.join("")
기본 아이디어:
1. 마크를 우회하고 콘텐츠의 실제 단어 수를 가져옵니다. 콘텐츠의 처음 100개 단어를 표시해야 하는 경우 마크 검색을 우회하고 100번째 단어의 실제 인덱스를 가져옵니다. . 그런 다음 이 인덱스 앞의 문자열을 가로챕니다.
2. 획득한 문자열을 기반으로 문자열에 존재하는 시작 태그와 끝 태그를 가져옵니다. 참고: 여기서 시작 태그는 "<"로 시작하고 다음 문자는 "/"가 아닙니다.
3. 2.에서 얻은 시작 태그 중 쌍으로 나타날 필요가 없는 태그를 제거합니다. br, img, hr 등
4. 3에서 처리한 시작 태그와 2에서 얻은 종료 태그를 비교합니다. 페어링이 되지 않으면 적절한 위치에 페어링합니다.
이 기능은 엄격한 테스트를 거치지 않았습니다. 관심이 있으시면 테스트에 도움을 주실 수도 있습니다. 더 나은 아이디어가 있으면 토론에 답변해 주세요.
작성자: cnblogs bravfing