php html格式转文本格式代码

在php中将html标签转换成纯文本的方法有不少,像php自带了函数strip_tags它就可以把html直接转换在纯文本文格式了,下面我来具体来看看各种转换代码。

先来看strip_tags()函数用法,下面的例子删除<a>标记之外的所有标记,代码如下:

  1. <?php $input = "This <a href="http://www.phpfensi.com/">example</a>
  2. is <strong>yanshare</strong>!";
  3. echo strip_tags($input, "<a>");
  4. ?>

输入结果:This <a href="http://www.phpfensi.com/">example</a>,这里就连接连接与连接中的内容都过滤掉了,我们如果想保留A中的内容可以参考下面代码

strip_tags有一个可选的参数allowable_tags指定在此过程中可以跳过的标记,下面的例子使用了strip_tags()删除字符串中的所以HTML标记,代码如下:

  1. <?php $input = "Email<a href="example@example.com">example@example.com</a>";
  2. echo strip_tags($input);
  3. ?>

这回返回以下结果:Email example@example.com

一个自定义的将html转换为无html标签的字符集,返回转换好的字符串,代码如下:

  1. function html2text($str){
  2. $str = preg_replace("/<style .*?</style>/is", "", $str); $str = preg_replace("/<script .*?</script>/is", "", $str);
  3. $str = preg_replace("/<br s*/?/>/i", "n", $str);
  4. $str = preg_replace("/</?p>/i", "nn", $str);
  5. $str = preg_replace("/</?td>/i", "n", $str);
  6. $str = preg_replace("/</?div>/i", "n", $str);
  7. $str = preg_replace("/</?blockquote>/i", "n", $str);
  8. $str = preg_replace("/</?li>/i", "n", $str);
  9. $str = preg_replace("/&nbsp;/i", " ", $str);
  10. $str = preg_replace("/&nbsp/i", " ", $str);
  11. $str = preg_replace("/&amp;/i", "&", $str);
  12. $str = preg_replace("/&amp/i", "&", $str);
  13. $str = preg_replace("/&lt;/i", "<", $str);
  14. $str = preg_replace("/&lt/i", "<", $str);
  15. $str = preg_replace("/&ldquo;/i", '"', $str);
  16. $str = preg_replace("/&ldquo/i", '"', $str);
  17. $str = preg_replace("/&lsquo;/i", "'", $str);
  18. $str = preg_replace("/&lsquo/i", "'", $str);
  19. $str = preg_replace("/&rsquo;/i", "'", $str);
  20. $str = preg_replace("/&rsquo/i", "'", $str);
  21. $str = preg_replace("/&gt;/i", ">", $str);
  22. $str = preg_replace("/&gt/i", ">", $str);
  23. $str = preg_replace("/&rdquo;/i", '"', $str);
  24. $str = preg_replace("/&rdquo/i", '"', $str);
  25. $str = strip_tags($str);
  26. $str = html_entity_decode($str, ENT_QUOTES, "utf-8");
  27. $str = preg_replace("/&#.*?;/i", "", $str);
  28. return $str;
  29. }