程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP將HTML轉換成文本一些方法總結

PHP將HTML轉換成文本一些方法總結

編輯:關於PHP編程

在php中html轉換成文本提供了自帶的函數strip_tags了,但有時此函數不夠用,下面總結了一些用戶自定的函數,各位可參考。

最常用的使用php函數strip_tags

 代碼如下 復制代碼


<?php
$mystr=<<<SATO
此處省略幾十行HTML代碼^_^
SATO;
$str=strip_tags($mystr);
//到這裡就已經達到我的HTML轉為TXT文本的目的了,哈哈,使用這個函數真方便
//下面是插件的一些切詞等操作,這裡就不多說了
?>


自定義函數

 代碼如下 復制代碼

<?php
// $document 應包含一個 HTML 文檔。
// 本例將去掉 HTML 標記,javascript 代碼
// 和空白字符。還會將一些通用的
// HTML 實體轉換成相應的文本。

$search = array ("'<script[^>]*?>.*?</script>'si",  // 去掉 javascript
                 "'<[/!]*?[^<>]*?>'si",           // 去掉 HTML 標記
                 "'([rn])[s]+'",                 // 去掉空白字符
                 "'&(quot|#34);'i",                 // 替換 HTML 實體
                 "'&(amp|#38);'i",
                 "'&(lt|#60);'i",
                 "'&(gt|#62);'i",
                 "'&(nbsp|#160);'i",
                 "'&(iexcl|#161);'i",
                 "'&(cent|#162);'i",
                 "'&(pound|#163);'i",
                 "'&(copy|#169);'i",
                 "'&#(d+);'e");                    // 作為 PHP 代碼運行

$replace = array ("",
                  "",
                  "\1",
                  """,
                  "&",
                  "<",
                  ">",
                  " ",
                  chr(161),
                  chr(162),
                  chr(163),
                  chr(169),
                  "chr(\1)");

$text = preg_replace ($search, $replace, $document);
?>

後來我從網上看到了一個使用PHP寫的方法,使用這個方法也可以實現將HTML轉為TXT文本,個人覺得也還蠻實用的,在這裡分享一下,代碼如下:

 代碼如下 復制代碼 function HtmlToText($str){
  $str=preg_replace("/<sty(.*)/style>|<scr(.*)/script>|<!--(.*)-->/isU","",$str);//去除CSS樣式、JS腳本、HTML注釋
  $alltext="";//用於保存TXT文本的變量
  $start=1;//用於檢測<左、>右標簽的控制開關
  for($i=0;$i<strlen($str);$i++){//遍歷經過處理後的字符串中的每一個字符
    if(($start==0)&&($str[$i]==">")){//如果檢測到>右標簽,則使用$start=1;開啟截取功能
      $start=1;
    }else if($start==1){//截取功能
      if($str[$i]=="<"){//如果字符是<左標簽,則使用<font color='red'>|</font>替換
        $start=0;
        $alltext.="<font color='red'>|</font>";
      }else if(ord($str[$i])>31){//如果字符是ASCII大於31的有效字符,則將字符添加到$alltext變量中
        $alltext.=$str[$i];
      }
    }
}
//下方是去除空格和一些特殊字符的操作
$alltext = str_replace(" "," ",$alltext);
$alltext = preg_replace("/&([^;&]*)(;|&)/","",$alltext);
$alltext = preg_replace("/[ ]+/s"," ",$alltext);
return $alltext;
}

使用上面這個方法也可以實現將簡答的HTML代碼轉換為TXT文本。

例3

 代碼如下 復制代碼

function html2text($str,$encode = 'GB2312')
{

  $str = preg_replace("/<style .*?</style>/is", "", $str);
  $str = preg_replace("/<script .*?</script>/is", "", $str);
  $str = preg_replace("/<br s*/?/>/i", "n", $str);
  $str = preg_replace("/</?p>/i", "nn", $str);
  $str = preg_replace("/</?td>/i", "n", $str);
  $str = preg_replace("/</?div>/i", "n", $str);
  $str = preg_replace("/</?blockquote>/i", "n", $str);
  $str = preg_replace("/</?li>/i", "n", $str);

  $str = preg_replace("/&nbsp;/i", " ", $str);
  $str = preg_replace("/&nbsp/i", " ", $str);

  $str = preg_replace("/&amp;/i", "&", $str);
  $str = preg_replace("/&amp/i", "&", $str);

  $str = preg_replace("/&lt;/i", "<", $str);
  $str = preg_replace("/&lt/i", "<", $str);

  $str = preg_replace("/&ldquo;/i", '"', $str);
  $str = preg_replace("/&ldquo/i", '"', $str);

     $str = preg_replace("/&lsquo;/i", "'", $str);
     $str = preg_replace("/&lsquo/i", "'", $str);

     $str = preg_replace("/&rsquo;/i", "'", $str);
     $str = preg_replace("/&rsquo/i", "'", $str);

  $str = preg_replace("/&gt;/i", ">", $str);
  $str = preg_replace("/&gt/i", ">", $str);

  $str = preg_replace("/&rdquo;/i", '"', $str);
  $str = preg_replace("/&rdquo/i", '"', $str);

  $str = strip_tags($str);
  $str = html_entity_decode($str, ENT_QUOTES, $encode);
  $str = preg_replace("/&#.*?;/i", "", $str);
    
  return $str;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved