Php HTML到纯文本-未知的原始编码

Php HTML到纯文本-未知的原始编码,php,html,character-encoding,arabic,strip-tags,Php,Html,Character Encoding,Arabic,Strip Tags,我正在使用PHP,从网站获取html,将其转换为纯文本并保存到数据库中 它们需要以utf-8格式保存到数据库中。 我的第一个问题是我不知道原始编码,从未知编码到utf-8的最佳编码方式是什么 第二个问题是html到纯文本的转换。我试着使用html2text,但它把所有的外国utf字符都搞乱了 最好的方法是什么 编辑:关于纯文本的部分似乎不够清晰。我不需要只剥离html标记。我想在保留一种文档结构的同时去掉标签,标签将转换为换行符等,像这样的标签将与其内容一起完全删除。 使用mb\u detect

我正在使用PHP,从网站获取html,将其转换为纯文本并保存到数据库中

它们需要以utf-8格式保存到数据库中。 我的第一个问题是我不知道原始编码,从未知编码到utf-8的最佳编码方式是什么

第二个问题是html到纯文本的转换。我试着使用html2text,但它把所有的外国utf字符都搞乱了

最好的方法是什么

编辑:关于纯文本的部分似乎不够清晰。我不需要只剥离html标记。我想在保留一种文档结构的同时去掉标签<代码>,
  • 标签将转换为换行符等,像
    这样的标签将与其内容一起完全删除。

    • 使用
      mb\u detect\u encoding()
      进行编码检测

    • 使用
      strip_tags()
      去除HTML标记

    其他主题如格式化输出取决于您的需要

    编辑:我不知道是否存在一个完整的解决方案,但这个链接确实有助于改进现有的html到文本PHP脚本


    此功能可能对您有用:

    <?php
    function FixEncoding($x){
      if(mb_detect_encoding($x)=='UTF-8'){
        return $x;
      }else{
        return utf8_encode($x);
      }
    }
    ?>
    
    
    
    mb\u detect\u编码似乎就是我想要的。但脱衣舞标签并不完全是这样。我需要一个更高级的库,比如html2text,它对utf8友好。@chaft:html2text用于转换和格式化文本。如果它是utf8友好的,那么它不应该弄乱字符。检查以下状态:“[
    strip_tags()
    ]如果仅使用UTF-8,则可能是多字节安全的(多字节UTF-8字符不包含类似小于或大于符号的字节序列)。避免使用UTF-16和UTF-32等。”@EmirAkaydın:I'd+1如果可以的话,请再次回答。:)@赫伯特html2text不支持utf8。strip_tags()不是我要找的。它不分青红皂白地剥离标签,可能会破坏带有html标签的文本使用类似的标记时,它会混淆javascipt和文本。@AntonioLaguna utf8\u encode仅转换ISO-8859-1编码的字符串,不确定您希望从
    text/plain
    编码中得到什么(您是想保留标记、去除标记,还是介于两者之间)。。。也许值得一看HTML净化器的转换:相关:是的,但不是utf8_编码,您应该使用mb_convert_编码。utf_编码仅从ISO-8859-1编码