php把html批量转换成txt文件

发布时间:2019-09-13编辑:脚本学堂
本文介绍了php中实现html批量转换为txt文本文件的方法,一个php批量转换文件格式的例子,有需要的朋友参考下。

网上下载了多种html转txt的软件,无一例外的只转换了基本的html代码,类似 “ ” &mdash 这种特殊的html符号并没有得到转换,影响阅读体验。
用php做一个html to txt的代码。
第一步:建立html转txt的自定义函数
 

复制代码 代码示例:
<?php
function html2text($str){ 
  $str = preg_replace("/<style .*?</style>/is", "", $str);
  $str = preg_replace("/<script .*?</script>/is", "", $str);
  $str = preg_replace("/n|r/", "", $str);//先把文本中所有的换行替换为空,避免下面替换换行时冲突
  $str = preg_replace("/<brs?/?>/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("/&amp;/i", "&", $str);
  $str = preg_replace("/&lt;/i", "<", $str);
  $str = preg_replace("/&gt;/i", ">", $str);
  $str = preg_replace("/&quot;/i", '"', $str);
  $str = preg_replace("/&ldquo;/i", '“', $str);
  $str = preg_replace("/&rdquo;/i", '”', $str);
  $str = preg_replace("/&lsquo;/i", "‘", $str);
  $str = preg_replace("/&rsquo;/i", "’", $str);
  $str = preg_replace("/&mdash;/i", '—', $str);
  $str = preg_replace("/&hellip;/i", '…', $str);
  $str = preg_replace("/&middot;/i", '·', $str);
  $str = preg_replace("/&times;/i", '×', $str);
  //如果有特殊需求,请在本行下面按照以上格式继续加html特殊符号和转换后的符号
  $str = strip_tags($str);//去除空字符、html 和 php 标记
  $str = html_entity_decode($str, ent_quotes, $encode);//解码双引号和单引号 &#039;
  $str = preg_replace("/&#.*?;/i", "", $str); //替换所有&#开始;结尾的特殊字符
 return $str;
}
?>
 

第二步:把文件夹下的所有html文件转为txt文件
 

复制代码 代码示例:
<?php
//要读取的目录
 $folder='e:apmservwwwhtdocstoolhtml-to-txtfiles';
//打开目录
$fp=opendir($folder);
//阅读目录
while (($file = readdir($fp)) !== false){
$filetype = substr ( $file, strripos ( $file, "." ) + 1 );
$filename=substr($file,0,strrpos($file,'.'));
if($file!='.' &&$file!='..'&&$filetype == "html"){
echo $filename.'<br />';
$content=file_get_contents("$folder/$file");
//打开文件
$op = fopen("$folder/$filename.txt", 'a');
//写入文件
fwrite($op,html2text($content));
//关闭文件
fclose($op);
//删除html文件
unlink("$folder/$file");
}
}
//关闭目录
closedir($fp);
?>
 

补充知识点:html转txt小技巧
把<br>替换成换行,如果<br>已经是行末,那么把<br>替换成n会变成2个换行,也就是说会空一行。但是我们希望出现<br>只是换行,只有出现</p>才是空一行,该怎么办呢?
其实只要在替换之前多一个步骤,把 n和r都替换为空,即 n|r 替换为空,之后再去做html标签的替换,就不会出现这些问题了。
也许有人会问,为什么既要替换n又要替换r呢
n代表换行,r代表回车,在txt文本中这两种形式都有可能存在,这是我工作中所总结的,肯定不会错!
该知识点中提到的在本案例中已经融进去了,不用担心html替换txt出现什么问题。