PHP バージョンは記事の要約を自動的に生成します_PHP チュートリアル

WBOY
リリース: 2016-07-21 15:51:10
オリジナル
1170 人が閲覧しました

記事抄録を自動生成【JavaScript版】。
BLOG などのプログラムを作成するとき、記事の前の部分を表示する必要があることがよくありますが、不適切な切り詰めにより終了タグが破壊され、ドキュメント全体の構造が損傷する可能性があります。この問題は、私の関数を使用することで簡単に解決できます。要件の質問。

この機能をサーバー側に適用するかクライアント側に適用するかを誰もが考慮する必要があります。この関数は実行するとマシンへの負荷が高くなる可能性があるため、
セキュリティ要件が高くない場合はクライアントに配置できます。

対応するデータベース クエリも最適化されるように、この概要をデータ テーブルの別のフィールドに配置することをお勧めします。多くの時間を費やす代わりに少しのスペースを犠牲にしても、それでも十分に得です。

セキュリティの問題、主にコンテンツのセキュリティについてもう一度話しましょう。クライアントが通常の要約情報を変更する場合、通常、BLOG の所有者がその権限を持っているため、要約と原文の一貫性を破壊するのは所有者の責任です。コンテンツ以外のセキュリティはサーバー側で解決できます。したがって、この機能はクライアント側で使用することをお勧めします。

コアコード:
最近適用したところ、上記の関数がマルチバイト文字セットをうまくサポートしていないことが判明したので、書き直しました。

問題が発生した場合は、次の機能を試してみてください。

function Generate_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|アドレス|プリ|テーブル|TR|TD|TH|入力|選択|テキストエリア|オブジェクト|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.">";
}

}
}

$cutpos = array_shift($posStack) - 1;    
$Foremost = mb_substr($Foremost,0,$cutpos,"UTF-8");
$Foremost を返す;
};欢迎大家找错误。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/319183.html技術記事自動生成文章摘要[JavaScript 版]。 私が写ブログでこのような手順を実行するときは、文章の前の一部を表示する必要があることがよくありますが、また、全体を構成するために不適切な破壊的なブロックが封入されています...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!