首页 > php代码 > PHP将HTML转换成纯文本内容实例

PHP将HTML转换成纯文本内容实例

把html转换成纯文本我们可以使用很多方法,不过最简单的就是使用strip_tags函数,但是还有一些朋友会发现可以使用自定义函数过滤掉,下面整理了一些方法。

将HTML转换为纯文本

有时候可能需要将HTML文本转换为纯文本。可以使用strip_tags()函数达到这个目的,该函数删除字符串中的所有HTML和PHP标记,只剩下文本实体。其形式为:

string strip_tags(string str[,string allowable_tags])

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

<?php
$input = "Email example@example.com";
echo strip_tags($input);
?>

这回返回以下结果:

Email example@example.com

下面的例子删除<a>标记之外的所有标记:

<?php
$input = "This example
is yanshare!";
echo strip_tags($input, "");
?>

返回结果如下:

This example
is yanshare!

PHP版将html中的<br />换行符转换为文本框中的换行符:

<?php
function br2nl($text) {
    return preg_replace('/<br\\s*?\/??>/i', '', $text);
}
?>

或者:

<?php
function br2nl($text) {
    $text = preg_replace('/<br\\s*?\/??>/i', chr(13) , $text);
    return preg_replace('/ /i', ' ', $text);
}
?>
<?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
$mystr = <<<SATO
此处省略几十行HTML代码^_^
SATO;
$str = strip_tags($mystr);
//到这里就已经达到我的HTML转为TXT文本的目的了,哈哈,使用这个函数真方便
//下面是插件的一些切词等操作,这里就不多说了
?>

后来我从网上看到了一个使用PHP写的方法,使用这个方法也可以实现将HTML转为TXT文本,个人觉得也还蛮实用的,在这里分享一下,代码如下:

<?php
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文本


本文地址:http://www.phprm.com/code/63393.html

转载随意,但请附上文章地址:-)

标签:none

发表留言