>백엔드 개발 >PHP 튜토리얼 >기사 요약을 자동으로 생성하는 Google 크롬 공식 버전 코드 [PHP 버전]

기사 요약을 자동으로 생성하는 Google 크롬 공식 버전 코드 [PHP 버전]

WBOY
WBOY원래의
2016-07-29 08:36:511112검색

구현 내용: HTML 코드가 포함된 텍스트 일부를 잘라내지만 포함 태그가 닫히지 않는 문제는 없습니다.
참고: 이는 서버 측에서 사용하기 위한 PHP 버전입니다. 클라이언트 버전이 필요한 경우 다음 기사를 읽어보세요.
BLOG와 같은 프로그램을 작성할 때 이전 부분을 표시해야 하는 경우가 많습니다. 하지만 부적절한 잘림으로 인해 닫는 태그가 손상되고 전체 문서 구조가 손상될까 걱정됩니다. 내 기능을 사용하면 높은 요구 사항 없이 이 문제를 해결할 수 있습니다.
이 기능이 서버 측에 적용되는지, 클라이언트 측에 적용되는지는 모두가 고려해야 합니다. 이 기능은 실행하는 데 기계 집약적일 수 있다고 생각하므로 보안 요구 사항이 높지 않은 경우 클라이언트에 배치할 수 있습니다.
해당 데이터베이스 쿼리도 최적화되도록 이 요약을 데이터 테이블의 별도 필드에 넣는 것이 가장 좋습니다. 많은 시간을 대가로 약간의 공간을 희생하는 것은 여전히 ​​좋은 일입니다.
콘텐츠 보안을 중심으로 보안 문제에 대해 다시 이야기해 보겠습니다. 고객이 정상적인 요약 정보를 변경하려는 경우 일반적으로 BLOG 소유자가 이러한 권한을 가지며 요약과 원본 텍스트 간의 일관성을 파괴하는 것은 자신의 책임입니다. 콘텐츠 이외의 보안은 서버측에서 해결할 수 있습니다. 따라서 이 기능은 클라이언트 측에서 사용하는 것이 좋습니다.
핵심 코드

코드 복사 코드는 다음과 같습니다.


// PHP 4.3 이상 필요
Define(" BRIEF_LENGTH", 800); //기사 브리핑의 단어 수
function Generate_Brief($text){
global $Briefing_Length
if(strlen($text) <= BRIEF_LENGTH ) $ 텍스트 반환
$Foremost = substr($text, 0, BRIEF_LENGTH)
$re = "/<(/?)(P|DIV|H1|H2|H3|H4|H5| H6|주소 |PRE|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|OBJECT|A|UL|OL|LI|BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT|SPAN) [^> ;]*(>?)/i";
$Single = "/BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT/i";
$Stack = array() ; $posStack = array();
preg_match_all($re,$Foremost,$matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE)
/* [하위 일치 사양]:
$matches[$i ][1 ] : 현재 "<...>" 마찰이 닫는 부분인지 여부를 나타내는 "/" 문자
$matches[$i][2] : 요소 이름
$matches[$i ][3 ] : "<...>" 마찰의 오른쪽 > */
for($i = 0 ; $i if ($matches [$i][1][0] == ""){
$Elem = $matches[$i][2][0]
if(preg_match($Single,$Elem) ) && $ match[$i][3][0] !=""){
계속
array_push($Stack, strtoupper($matches[$i][2][0])) ;
array_push($posStack, $matches[$i][2][1])
if($matches[$i][3][0] =="") break
} else{
$StackTop = $Stack[count($Stack)-1]
$End = strtoupper($matches[$i][2][0])
if(strcasecmp( $ StackTop,$End)==0){
array_pop($Stack);
array_pop($posStack)
if($matches[$i][3][0] =="" ; 스택) - 1; $ Foremost = substr($Foremost,0,$cutpos)
return $Foremost;문제가 발생하는 경우(위 함수가 멀티바이트 문자 집합을 제대로 지원하지 않는 경우) 다음을 시도하지 마세요!

코드 복사 코드는 다음과 같습니다.


function Generator_Brief($text){
global $Briefing_Length; 🎜> mb_regex_encoding ("UTF-8");
if(mb_strlen($text) <= BRIEF_LENGTH ) return $text;
$Foremost = mb_substr($text, 0, BRIEF_LENGTH); re = " <(/?)(P|DIV|H1|H2|H3|H4|H5|H6|주소|PRE|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|OBJECT|A|UL| OL|LI |BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT|SPAN)[^>]*(>?)";
$Single = "/BASE|META|LINK |HR| BR|PARAM|IMG|AREA|INPUT|BR/i";
$Stack = array(); $posStack = array();
mb_ereg_search_init($Foremost, $re, 'i') ;
while($pos = mb_ereg_search_pos()){
$match = mb_ereg_search_getregs();
/* [자식 일치 공식]:
$matche[1]: "/" 문자 현재 "<...>" 마찰이 닫는 부분인지 여부
$matche[2] : 요소 이름
$matche[3] : "<...> " 마찰
*/
if($match[1]==""){
$Elem = $match[2];
if(mb_eregi($Single, $Elem) && $ match[3 ] !=""){
계속;
}
array_push($Stack, mb_strtoupper($Elem))
array_push($posStack, $pos[0]); 🎜> } else{
$StackTop = $Stack[count($Stack)-1]
$End = mb_strtoupper($match[2])
if(strcasecmp($StackTop,$End) )== 0){
array_pop($Stack);
array_pop($posStack)
if($match[3] ==""){
$Foremost = $Foremost." > " ;
                                         F- 8")
$Foremost;
위 내용은 구글 크롬 공식 버전을 포함하여 구글 크롬 공식 버전 [PHP 버전]에 대한 기사 요약을 자동으로 생성하는 코드를 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.