記事の概要を自動生成する PHP コード

WBOY
リリース: 2016-07-25 09:04:04
オリジナル
1111 人が閲覧しました
  1. // PHP 4.3 以降が必要

  2. define("BRIEF_LENGTH", 800); //記事のブリーフィングの文字数
  3. function Generate_Brief($text){
  4. global $Briefing_Length;
  5. if(strlen($text) <= BRIEF_LENGTH ) $text を返します。
  6. $Foremost = substr($text, 0, BRIEF_LENGTH);
  7. $re = "/<(/?)(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|OBJECT|A |UL|OL|LI|BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT|SPAN)[^>]*(>?)/i";
  8. $Single = "/BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT/i";
  9. $Stack = array(); $posStack = 配列();
  10. preg_match_all($re,$Foremost,$matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE);
  11. /* [子マッチング仕様]:
  12. $matches[$i][1] : 現在の "<...>" かどうかを示す "/" 文字摩擦は終了部分です
  13. $matches[$i][2] : 要素名。
  14. $matches[$i][3] : 右 > 「<...>」摩擦 */
  15. for($i = 0 ; $i < count($matches); $i++){
  16. if($matches[$i][1][0] == ""){
  17. $Elem = $matches[$i][2][0];
  18. if(preg_match($Single,$Elem) && $matches[$i][3][0] !=""){
  19. 続ける;
  20. }
  21. array_push($Stack, strtoupper($matches[$i][2][0]));
  22. array_push($posStack, $matches[$i][2][1]);
  23. if($matches[$i][3][0] =="") ブレーク;
  24. }else{
  25. $StackTop = $Stack[count($Stack)-1];
  26. $End = strtoupper($matches[$i][2][0]);
  27. if(strcasecmp($StackTop,$End)==0){
  28. array_pop($Stack);
  29. array_pop($posStack);
  30. if($matches[$i][3][0] ==""){
  31. $Foremost = $Foremost.">";
  32. }
  33. }
  34. }
  35. }
  36. $cutpos = array_shift($posStack) - 1;
  37. $Foremost = substr($Foremost,0,$cutpos);
  38. $Foremost を返します;
  39. };

  40. 代コード2:

  41. function Generate_Brief($text ){
  42. グローバル $Briefing_Length;
  43. mb_regex_encoding("UTF-8");
  44. if(mb_strlen($text) <= BRIEF_LENGTH ) $text を返します。
  45. $Foremost = mb_substr($text, 0, BRIEF_LENGTH);
  46. $re = "<(/?)(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|OBJECT|A| UL|OL|LI|BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT|SPAN)[^>]*(>?)";
  47. $Single = "/BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT|BR/i";
  48. $Stack = array(); $posStack = 配列();
  49. mb_ereg_search_init($Foremost, $re, 'i');
  50. while($pos = mb_ereg_search_pos()){
  51. $match = mb_ereg_search_getregs();
  52. /* [子マッチング式]:
  53. $matche[1] : 現在の "<...>" かどうかを示す "/" 文字摩擦は終了部分です
  54. $matche[2] : 要素名。
  55. $matche[3] : 正しい > 「<...>」摩擦
  56. */
  57. if($match[1]==""){
  58. $Elem = $match[2];
  59. if(mb_eregi($Single, $Elem) && $match[3] !=""){
  60. 続ける;
  61. }
  62. array_push($Stack, mb_strtoupper($Elem));
  63. array_push($posStack, $pos[0]);
  64. }else{
  65. $StackTop = $Stack[count($Stack)-1];
  66. $End = mb_strtoupper($match[2]);
  67. if(strcasecmp($StackTop,$End)==0){
  68. array_pop($Stack);
  69. array_pop($posStack);
  70. if($match[3] ==""){
  71. $Foremost = $Foremost.">";
  72. }
  73. }
  74. }
  75. }
  76. $cutpos = array_shift($posStack) - 1;
  77. $Foremost = mb_substr($Foremost,0,$cutpos,"UTF-8");
  78. $Foremost を返します;
  79. };
  80. ?>

复制コード
ここまで、自動生成文章摘要のphp代コードの両方の方法都介绍完了、希望对您有帮助。 编辑推荐:

php摘要生成関数数(自定义,無乱コード)


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート