jstewmc/encode-file

编码文件。

v0.2.0 2016-09-01 03:40 UTC

This package is auto-updated.

Last update: 2024-08-29 04:01:12 UTC


README

编码文件。

use Jstewmc\EncodeFile\Encode;

// set the filename
$filename = '/path/to/foo.txt';

// create an ASCII encoded string
$contents = mb_convert_encoding('foo', 'ASCII');

// put the contents into the file
file_put_contents($filename, $contents);

// is the file UTF-32 encoded?
mb_check_encoding(file_get_contents($filename), 'UTF-32');  // returns false

// create the service
// keep in mind, you'll need to implement the Read and Write interfaces
//
$service = new Encode(new Read(), new Write());

// convert the file to UTF-32
$service($filename, 'UTF-32');

// is the file UTF-32 encoded?
mb_check_encoding(file_get_contents($filename), 'UTF-32');  // returns true

PHP 扩展

此库需要 PHP 的非默认 mbstring 扩展。如果服务实例化时未加载 mbstring 扩展,将抛出 BadMethodCallException 异常。

依赖项

此库依赖于(并提供)两个接口,用于 读取文件服务写入文件服务。前者必须实现 __invoke(string $filename): string 方法,后者必须实现 __invoke(string $filename, string $contents): int 方法。

可以由 jstewmc/read-filejstewmc/write-file 库实现 读取文件写入文件 接口。例如,在您的应用程序中,扩展 Jstewmc\ReadFile\Read 并实现 Jstewmc\EncodeFile\Read

namespace My\App;

use Jstewmc\EncodeFile\Read as ReadInterface;
use Jstewmc\ReadFile\Read as ReadParent;

class Read extends ReadParent implements ReadInterface
{
    // nothing yet   
}

从编码

请注意,检测字符串的字符编码很困难。即使是 PHP 的 mb_detect_encoding() 函数也不是完美的。例如,mb_detect_encoding() 几乎永远不会检测到 Windows-1252 编码,即使字符串实际上是以 Windows-1252 编码的(有关详细信息,请参阅 Bug #64667)。

为了防止错误地检测文件的 from 编码,您可以将它包含为服务的第三个参数。如果没有提供“from”编码,库将尝试检测它。

use Jstewmc\EncodeFile\Encode;

$service = new Encode(new Read(), new Write());

// encode file as UTF-8 from Windows-1252
$service('/path/to/file.txt', 'UTF-8', 'Windows-1252');

作者

Jack Clayton

许可证

MIT

版本

0.3.0,2016年9月6日

0.2.0,2016年8月31日

0.1.0,2016年8月27日

  • 首次发布