PHP將HTML轉爲TXT文本

須要將HTML轉換爲TXT文本的內容。
因而翻了翻W3C的PHP手冊,由於對PHP的函數庫不太熟悉,只找到htmlspecialchar(不對轉義字符進行轉換)函數和nl2br(將字符串轉換成HTML的標籤)函數。這顯然不是我如今想要的,因而我在本身平時積累下來的PHP函數庫中,使用中文進行了一翻搜索,終於發現了一個函數——strip_tags(功能:從字符串中去除HTML和PHP標記)php

<?php
$mystr=<<<SATO
此處省略幾十行HTML代碼^_^
SATO;
$str=strip_tags($mystr);
//到這裏就已經達到個人HTML轉爲TXT文本的目的了,哈哈,使用這個函數真方便
//下面是插件的一些切詞等操做,這裏就很少說了
?>
後來我從網上看到了一個使用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文本。
最後說一下htmlspecialchars、nl2br這兩個與HTML相關的PHP函數:
htmlspecialchars(不對轉義字符進行轉換):
  實例:echo htmlspecialchars("<a href=\"#\">baidu</a>");//&lt;a href=&quot;#&quot;&gt;baidu&lt;/a&gt;
nl2br(將字符串轉換成HTML的標籤):
  實例:echo nl2br("<b>PHP</b>");//PHP
以上就是關於HTML轉換爲TXT文本的一些方法,不妥之處懇請指正^_^html

相關文章
相關標籤/搜索