问题标签 [php-stream-wrappers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
773 浏览

php - PHPExcel错误地将xls文件读取为HTML

PHPExcel用来读取一个大的“xls”文件。首先,我正在确定阅读器使用的文件类型PHPExcel_IOFactory::identify($inputFileName)。但是,PHPExcel 错误地将其识别为 HTML 文件并使用 HTML Reader 失败并出现 DOM 错误。

经过一番搜索,我发现 PHPExcel 不适用于流包装器。参考这里

我不知道流包装器是什么,我尝试读取的文件是使用 wget 下载的。

请让我知道如何删除流包装器,以便 PHPExcel 可以正确识别文件。

谢谢你。

0 投票
1 回答
55 浏览

php - 比较php文件中的字符串和cli中的字符串

当我从 cli 获得输入时,我 var_dump 它,这向我展示了:

所以我如何理解我收到了单个字符和一袋空格,所以这段代码将返回 false ($input == "Y")。我该如何解决这个问题?

0 投票
1 回答
595 浏览

php - 使用流过滤器对 S3 中的文件进行 base64 编码时缺少最后一个字符

我对 PHP 的流转换过滤器 ( base64_encode ) 有一个非常奇怪的问题。我的目标是使用 AWS S3 SDK 的 streamWrapper 从 s3 存储桶读取文件并对其进行 base64 编码,将其回显到响应中。为此,我使用以下代码,

这适用于所有类型的文件,但对于文本文件,它会删除最后一个字符。当我们解码 base64 响应时,最后一个字符丢失了。

例如,

Hello, world!编码为SGVsbG8sIHdvcmxkIQ==

但是上面的函数在编码时省略了最后一个字符,产生以下

SGVsbG8sIHdvcmxk解码为Hello, world

有什么想法吗?

非常感谢你帮助我。

0 投票
1 回答
401 浏览

php - php://input 通过 POST 用希伯来语检索 JSON,返回问号

我正在使用 PHP 脚本来检索通过 POST 发送的 JSON 对象。

JSON POST 请求基本上如下所示:

PHP服务器端代码如下:

我故意想将接收到的内容保存到一个文件(check.log)中,以便我可以检查接收到的原始输入。

我的问题是,当 JSON 在“value”、“value2”等位置包含希伯来语字符时,它们会在保存的文件 check.log 中作为问号 (?????) 接收(我已经检查过.log 通过十六进制编辑器。它们是问号。0x3F),因此收到的“check.log”文件如下所示:

如果它对任何人有帮助,我正在使用带有 PHP 5 的 Apache 2.2.3 服务器。

这是为 php://input 包装器设置的 PHP 内部编码的问题吗?

有没有什么办法解决这一问题?

0 投票
3 回答
719 浏览

php - PHP:将 MYSQL 查询写入 CSV

我正在尝试将 MySQLi 查询写入可下载的 CSV。以下标头为 CSV 打开一个流:

在此之下,我有以下尝试查询并将查询的每一行转换为 CSV 文件中的新行:

CSV 正在根据需要下载到浏览器,但它显示为空,查询结果未发送到 CSV。谁能指出我为什么会这样。

这是我第一次尝试比 hello world 更复杂的 PHP 脚本。如果答案非常简单或显而易见,我们深表歉意。

0 投票
1 回答
508 浏览

php - PHP:在流标头位于函数中时写入 CSV 文件

我正在尝试将 SQL 查询写入 PHP 中的 CSV 文件。感谢[在上一个问题][1] 中的一些建议,我已经完成了这项工作。但是,我试图从前面的示例中减少代码中的重复。

我在这里的函数中创建标头/流包装器:

然后我在条件语句中调用该函数并在此处将 $filename 作为参数传递:

问题是数据没有写入 CSV。我的感觉是我需要将“fputcsv”调用指向该函数。我已经尝试使用 'csvCreate->fputcsv' 这似乎不起作用。任何人都可以提出问题可能在这里。谢谢

0 投票
1 回答
2638 浏览

php - 如何使用 PSR-7 响应?

我的应用程序中的大多数响应是视图或 JSON。我不知道如何将它们放在ResponseInterfacePSR -7中实现的对象中。

这是我目前所做的:

这是我试图用 PSR-7 做的事情:

而且我认为 JSON 响应只是具有不同的标头,这将是相似的。据我了解,消息正文是 aStreamInterface并且当我尝试输出创建的文件资源时它可以工作,fopen但我如何使用字符串来做到这一点?

更新

Http\Response在我的代码中实际上是我自己ResponseInterface在 PSR-7 中的实现。我已经实现了所有接口,因为我目前坚持使用 PHP 5.3,并且找不到任何与 PHP < 5.4 兼容的实现。这是 的构造函数Http\Response

我可以修改我的实现以接受输出作为构造函数参数,或者我可以使用实现的withBody方法MessageInterface。不管我怎么做,问题是如何将字符串放入流中

0 投票
2 回答
541 浏览

php - 我可以使用带有 stream_wrapper_register 的命名空间类吗?

我有一个我想注册的类 VarStream

我们的类总是命名空间,所以我试过

没有运气。

注册流包装器时可以使用命名空间吗?

0 投票
2 回答
2804 浏览

php - php://input 在 PHP 5.6.16 中只能读取一次

PHP 手册指出使用 php://input 打开的流支持查找操作,并且从 PHP 5.6 开始可以多次读取,但我无法使其工作。以下示例清楚地表明它不起作用:

输出:

php://输入流是

  1. 成功读取
  2. 成功倒带(fseek 成功)
  3. 未成功阅读

难道我做错了什么?

0 投票
0 回答
119 浏览

php - PHP 输入流过滤器内存使用情况

我正在使用 PHP zip 流处理直接从 zip 存档中读取的 XML 文件。有时,这些文件包含与我无关的大型 CDATA 块,但会使 SimpleXml 处理耗尽内存。

我认为在将数据传递给之前实现一个流过滤器来删除这些块simple_xml_load_string可以解决问题。但是 PHP 在有和没有过滤器的情况下使用完全相同的内存量。

我的流过滤器如下所示:

我像这样使用它:

它确实返回了剥离的内容,但内存使用量根本没有下降。原始数据约为 50 Mb,剥离后的数据约为 150 Kb,因此我预计会看到一些差异。