问题标签 [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.
php - PHPExcel错误地将xls文件读取为HTML
我PHPExcel
用来读取一个大的“xls”文件。首先,我正在确定阅读器使用的文件类型PHPExcel_IOFactory::identify($inputFileName)
。但是,PHPExcel 错误地将其识别为 HTML 文件并使用 HTML Reader 失败并出现 DOM 错误。
经过一番搜索,我发现 PHPExcel 不适用于流包装器。参考这里。
我不知道流包装器是什么,我尝试读取的文件是使用 wget 下载的。
请让我知道如何删除流包装器,以便 PHPExcel 可以正确识别文件。
谢谢你。
php - 比较php文件中的字符串和cli中的字符串
当我从 cli 获得输入时,我 var_dump 它,这向我展示了:
所以我如何理解我收到了单个字符和一袋空格,所以这段代码将返回 false ($input == "Y")
。我该如何解决这个问题?
php - 使用流过滤器对 S3 中的文件进行 base64 编码时缺少最后一个字符
我对 PHP 的流转换过滤器 ( base64_encode ) 有一个非常奇怪的问题。我的目标是使用 AWS S3 SDK 的 streamWrapper 从 s3 存储桶读取文件并对其进行 base64 编码,将其回显到响应中。为此,我使用以下代码,
这适用于所有类型的文件,但对于文本文件,它会删除最后一个字符。当我们解码 base64 响应时,最后一个字符丢失了。
例如,
Hello, world!
编码为SGVsbG8sIHdvcmxkIQ==
但是上面的函数在编码时省略了最后一个字符,产生以下
SGVsbG8sIHdvcmxk
解码为Hello, world
有什么想法吗?
非常感谢你帮助我。
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 内部编码的问题吗?
有没有什么办法解决这一问题?
php - PHP:将 MYSQL 查询写入 CSV
我正在尝试将 MySQLi 查询写入可下载的 CSV。以下标头为 CSV 打开一个流:
在此之下,我有以下尝试查询并将查询的每一行转换为 CSV 文件中的新行:
CSV 正在根据需要下载到浏览器,但它显示为空,查询结果未发送到 CSV。谁能指出我为什么会这样。
这是我第一次尝试比 hello world 更复杂的 PHP 脚本。如果答案非常简单或显而易见,我们深表歉意。
php - PHP:在流标头位于函数中时写入 CSV 文件
我正在尝试将 SQL 查询写入 PHP 中的 CSV 文件。感谢[在上一个问题][1] 中的一些建议,我已经完成了这项工作。但是,我试图从前面的示例中减少代码中的重复。
我在这里的函数中创建标头/流包装器:
然后我在条件语句中调用该函数并在此处将 $filename 作为参数传递:
问题是数据没有写入 CSV。我的感觉是我需要将“fputcsv”调用指向该函数。我已经尝试使用 'csvCreate->fputcsv' 这似乎不起作用。任何人都可以提出问题可能在这里。谢谢
php - 如何使用 PSR-7 响应?
我的应用程序中的大多数响应是视图或 JSON。我不知道如何将它们放在ResponseInterface
PSR -7中实现的对象中。
这是我目前所做的:
这是我试图用 PSR-7 做的事情:
而且我认为 JSON 响应只是具有不同的标头,这将是相似的。据我了解,消息正文是 aStreamInterface
并且当我尝试输出创建的文件资源时它可以工作,fopen
但我如何使用字符串来做到这一点?
更新
Http\Response
在我的代码中实际上是我自己ResponseInterface
在 PSR-7 中的实现。我已经实现了所有接口,因为我目前坚持使用 PHP 5.3,并且找不到任何与 PHP < 5.4 兼容的实现。这是 的构造函数Http\Response
:
我可以修改我的实现以接受输出作为构造函数参数,或者我可以使用实现的withBody
方法MessageInterface
。不管我怎么做,问题是如何将字符串放入流中。
php - 我可以使用带有 stream_wrapper_register 的命名空间类吗?
我有一个我想注册的类 VarStream
我们的类总是命名空间,所以我试过
没有运气。
注册流包装器时可以使用命名空间吗?
php - php://input 在 PHP 5.6.16 中只能读取一次
PHP 手册指出使用 php://input 打开的流支持查找操作,并且从 PHP 5.6 开始可以多次读取,但我无法使其工作。以下示例清楚地表明它不起作用:
输出:
php://输入流是
- 成功读取
- 成功倒带(fseek 成功)
- 未成功阅读
难道我做错了什么?
php - PHP 输入流过滤器内存使用情况
我正在使用 PHP zip 流处理直接从 zip 存档中读取的 XML 文件。有时,这些文件包含与我无关的大型 CDATA 块,但会使 SimpleXml 处理耗尽内存。
我认为在将数据传递给之前实现一个流过滤器来删除这些块simple_xml_load_string
可以解决问题。但是 PHP 在有和没有过滤器的情况下使用完全相同的内存量。
我的流过滤器如下所示:
我像这样使用它:
它确实返回了剥离的内容,但内存使用量根本没有下降。原始数据约为 50 Mb,剥离后的数据约为 150 Kb,因此我预计会看到一些差异。