Php html2text写入输出文件时出现奇怪的缓冲输出问题

Php html2text写入输出文件时出现奇怪的缓冲输出问题,php,linux,character-encoding,Php,Linux,Character Encoding,我正在通过PHPEXEC命令运行html2text命令,以便在iMac上将HTML转换为纯文本。但我得到了一些非常奇怪的输出,字母重复,一些是随机次数,还有一些是奇怪的字符 通过保存堆栈溢出主页的HTML,然后运行html2text获得的示例输出 ccuu_urr_uee_unn_utt_umm_umm_unn_uii_utt_y *中国日报 St_a_c_k_Ov_e_r_f_l_w 每次我使用命令行程序时都会发生这种情况,我尝试了各种HTML页面 我对字符编码和html2text编写输出缓冲

我正在通过PHPEXEC命令运行html2text命令,以便在iMac上将HTML转换为纯文本。但我得到了一些非常奇怪的输出,字母重复,一些是随机次数,还有一些是奇怪的字符

通过保存堆栈溢出主页的HTML,然后运行html2text获得的示例输出

ccuu_urr_uee_unn_utt_umm_umm_unn_uii_utt_y *中国日报 St_a_c_k_Ov_e_r_f_l_w

每次我使用命令行程序时都会发生这种情况,我尝试了各种HTML页面

我对字符编码和html2text编写输出缓冲区的方式了解不多。我曾尝试使用-ascii和-utf8标志,但这两个标志并没有真正起到任何作用

我还尝试了设置程序输入/输出的不同方法,例如:

html2text <<< $string;
html2text <<< $string > output.txt
我甚至尝试过将输出直接加载到PHP代码中的字符串中,然后使用file\u put\u contents保存它。我认为这可能与流/缓冲区有关,但保存方式相同。奇怪的是,如果我直接将文本输出到命令行,输出看起来就正常了

我现在完全没有主意了,我花了两天的时间想弄清楚到底发生了什么

以前有人有过类似的问题吗

谢谢

如果您运行命令html2text-o file.txt page.html

在shell中,它按预期工作 在php中,使用exec,它会生成奇怪的文本,对吗? 故障排除 首先,我将使用一个简单的测试html文件进行测试,比如这个文件

file.html

我还将创建一个小php文件,其中只包含以下行:

simple.php

我将在shell运行中测试它:

html2text-o file1.txt page.html php simple.php

如果生成的文件相等

我会增加file.html的复杂度,总是使用本地文件,直到我感到足够满意或出现问题为止。 如果1起作用,那么我会尝试使用网页,直到出现问题或尝试了足够的测试 然后我会增加php文件的复杂性,一次添加一个特性,直到它崩溃。 如果生成的文件不同

首先,我要确保使用的是同一个库,php用户可能正在使用不同的库。我可以使用: 这是一个包含在shell和php脚本中的html2text。 使用bin的完整路径,例如:/usr/local/bin/html2text 如果结果仍然不同,那么我将尝试使用而不是exec,并检查STDERR和STDOUT是否存在错误或警告。
你能给你正在使用的html2text库添加一个链接吗?Tivie-我是通过自制软件安装的,我能找到的唯一细节是它的版本:1.3.2检查我的答案,并将我建议的测试结果发布在那里谢谢@Tivie,我将尝试这些,看看我的进展如何,我不认为它在PHP和命令行之间使用不同的包。当我在命令行中说输出正常时,我的意思是将输出文件保存为类似output.txt的格式。如果我少做output.txt,那么它显示的非常好。如果我在屏幕上回显它或只是打开文件,我会得到奇怪的输出。例如:我在使用较少的时候得到这个:| SUPPLIE | DELIVERY ADDRESS,它会显示一些奇怪的字符,但其余的都可以。我明白了。。。在屏幕上| | | | | | | | | | | | | | | | | | | | | | | | | DD | | | | | | | | | | | | | | | |。它主要受Word生成的HTML表的影响。我离开它一段时间后又回到了那里。最后我升级了poppler和html2text。表标题仍然有一些问题,但我不需要这些信息,因为它们总是静态的。由于升级了这些包,我能够读取HTML中的动态数据并完成项目。非常感谢@Tivie帮助诊断该问题。
html2text -o $outputTextFile $inputHtmlFile
<!DOCTYPE HTML>
<html>
<head></head>
<body>
    <span>I'm a simple html file</span>
</body>
</html>
<?php
exec('html2text -o file.txt page.html');