在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){使用上面這個方法也可以實現將簡答的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("/ /i", " ", $str);
$str = preg_replace("/ /i", " ", $str);
$str = preg_replace("/&/i", "&", $str);
$str = preg_replace("/&/i", "&", $str);
$str = preg_replace("/</i", "<", $str);
$str = preg_replace("/</i", "<", $str);
$str = preg_replace("/“/i", '"', $str);
$str = preg_replace("/&ldquo/i", '"', $str);
$str = preg_replace("/‘/i", "'", $str);
$str = preg_replace("/&lsquo/i", "'", $str);
$str = preg_replace("/’/i", "'", $str);
$str = preg_replace("/&rsquo/i", "'", $str);
$str = preg_replace("/>/i", ">", $str);
$str = preg_replace("/>/i", ">", $str);
$str = preg_replace("/”/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;
}