Php Can';无法处理文本文件内容(文件内容)

Php Can';无法处理文本文件内容(文件内容),php,laravel,Php,Laravel,修复 文件编码为UTF-16LE,在PhpStorm中更改为UTF-8,其行为如下 =========================================================== 我正在用PHP读取一个文本文件,希望读取和操作该文件的内容,但只要我以任何方式触摸该文件的读取内容,它就会“中断” 如果我读取该文件,则会显示文本,但任何其他操作都不起作用 $contents = file_get_contents($file); echo $contents; // work

修复

文件编码为UTF-16LE,在PhpStorm中更改为UTF-8,其行为如下

===========================================================

我正在用PHP读取一个文本文件,希望读取和操作该文件的内容,但只要我以任何方式触摸该文件的读取内容,它就会“中断”

如果我读取该文件,则会显示文本,但任何其他操作都不起作用

$contents = file_get_contents($file);
echo $contents; // works
$contents .= 'a longer test' . $contents;
echo $contents;
我的最终目标是在将内容转储到数据库之前对其运行一些正则表达式,但我首先需要能够使用它

如果有什么不同的话,我用的是Laravel。我尝试了
File::get($File)
,但结果相同

编辑以显示输出-Unicode问题

///第一次回音
这是一个关于语言和报酬的世界,是一个关于语言保护的世界,是一个关于历史文献的出版物,等等,1873年1月28日。DIXIÈME公告年报:C.LE F E U VRE,我的信息技术欧盟研究与社会发展部,贝雷斯福德图书馆,圣赫勒。1885. = 第1页=

//第二次回音
这是一个关于语言和报酬的世界,是一个关于语言保护的世界,是一个关于历史文献的出版物,等等,1873年1月28日。DIXIÈME公告年报:C.LE F E U VRE,我的信息技术欧盟研究与社会发展部,贝雷斯福德图书馆,圣赫勒。1885. = 第1页=⁡潬杮牥琠獥エ෾਀ഀ਀匀伀䌀䤀䔀吀䔀  䨀䔀刀匀䤀䄀䤀匀䔀ഀ਀倀伀唀刀  䰀 ᤀ줠 吀 唀 䐀䔀  䐀䔀  䰀 ᤀ䠠 䤀匀吀 伀 䤀刀 䔀  䔀吀  䐀䔀  䰀䄀  䰀䄀一䜀唀䔀  䐀唀  倀䄀夀匀Ⰰഀ਀䰀䄀  䌀伀一匀䔀刀嘀䄀吀䤀伀一  䐀䔀匀  䄀 一 吀䤀儀 唀 䤀吀준匀  䐀䔀  䰀 ᤀ䤠䰀 䔀 Ⰰ  䔀吀  䰀䄀  倀唀䈀䰀䤀䌀䄀吀䤀伀一 ഀ਀䐀䔀  䐀伀䌀唀䴀䔀一吀匀  䠀䤀匀吀伀刀䤀儀唀䔀匀Ⰰ  䔀吀䌀⸀Ⰰ  䔀吀䌀⸀ഀ਀䘀伀一䐀준䔀  䰀䔀  ㈀㠀  䨀䄀一嘀䤀䔀刀Ⰰ  ㄀㠀㜀㌀⸀ഀ਀䐀䤀堀䤀저䴀䔀  䈀唀䰀䰀䔀吀䤀一  䄀一一唀䔀䰀⸀ഀ਀㨀ഀ਀䌀⸀  䰀䔀   䘀 䔀 唀 嘀刀䔀Ⰰ  䤀䴀 倀刀 䤀䴀 䔀 唀 刀 ⴀ준 䐀 䤀吀 䔀唀 刀   䐀 䔀  䰀䄀  匀伀䌀䤀준吀준Ⰰഀ਀䈀䔀刀䔀匀䘀伀刀䐀  䰀䤀䈀刀䄀刀夀 Ⰰ  匀吀⸀ ⴀ䠀 준䰀䤀䔀 刀 ⸀ഀ਀㄀㠀㠀㔀⸀਀ഀ 㴀 倀愀最攀 ㄀ 㴀

如果我将第一个字符串放入一个herdoc中,所有的工作都正常,那么txt文件可能有什么问题吗?它是从旧PDF的OCRd中提取的文本

完整代码

public function import()
{
    // get all the files
    $files = File::files('../import');


    foreach ($files as $file) {
        // load text file contents
        $contents = file_get_contents($file);
        echo $contents; // as expected
        $contents .= 'a longer test' . $contents;
        echo $contents; // weird stuff

// test txt file contents inline
$contents2 = <<<EOD
SOCIETE  JERSIAISE
POUR  L ’É T U DE  DE  L ’H IST O IR E  ET  DE  LA  LANGUE  DU  PAYS,
LA  CONSERVATION  DES  A N TIQ U ITÉS  DE  L ’IL E ,  ET  LA  PUBLICATION
DE  DOCUMENTS  HISTORIQUES,  ETC.,  ETC.
FONDÉE  LE  28  JANVIER,  1873.
DIXIÈME  BULLETIN  ANNUEL.
:
C.  LE   F E U VRE,  IM PR IM E U R -É D IT EU R   D E  LA  SOCIÉTÉ,
BERESFORD  LIBRARY ,  ST. -H ÉLIE R .
1885.

 = Page 1 =


EOD;


        echo $contents2; // works
        $contents2 .= 'a longer test' . $contents2;
        echo $contents2; // prints as expected

    }
公共函数导入()
{
//获取所有文件
$files=File::files('../import');
foreach($files作为$file){
//加载文本文件内容
$contents=file\u get\u contents($file);
echo$contents;//如预期
$contents.=“更长的测试时间”。$contents;
echo$contents;//奇怪的东西
//内联测试txt文件内容
$contents2=已修复

文件编码为UTF-16LE,在PhpStorm中更改为UTF-8,其行为如下

或在代码中:

foreach ($files as $file) {
        // load text file contents
        $contents = file_get_contents($file);

        // fix encoding
        $contents = mb_convert_encoding($contents, 'UTF-8', 'UTF-16');
        echo $contents;
        .....

你不是在做串联。你在做数学加法。现在是秘密编辑……这是一个字符编码问题;几乎100%确定。如果你没有代码编辑器可以保存为不同的格式,请查阅记事本+,它是免费的,一个不错的;这就是我所使用的。@Fred ii-感谢你和MarcBYou知道堆栈可以让你放入你的拥有自己的答案并将其标记为已解决,这样问题就可以标记为已解决。我认为您不理解这个问题。这会附加文本,OP希望等待。我不想编辑该文件-只需获取其内容并在Richard+1上与itRight合作,告诉它“行为”;)
foreach ($files as $file) {
        // load text file contents
        $contents = file_get_contents($file);

        // fix encoding
        $contents = mb_convert_encoding($contents, 'UTF-8', 'UTF-16');
        echo $contents;
        .....