get_file_contents()之后的php字符串不可见字符

时间:2018-10-31 13:02:57

标签: php regex pcre

我有一个从交换服务器的管理外壳生成的.txt文件。

我正在使用php,并且想要使用get_file_contents()获取文件的内容,然后使用带有“ DisplayName”的preg_match()。此问题适用于整个文件。

$file = file_get_contents("file.txt");

//Does not work
preg_match("/DisplayName/", $file, $matches);

//Does work
preg_match("/D.i.s.p.l.a.y.N.a.m.e/", $file, $matches);

//Returns 1
preg_match("/D(.)i/", $file, $matches);
echo strlen($matches[1][0]);

如何删除这些不可见的字符,或者可能是什么? php中是否有一个函数来找出这个字符可能是什么?

https://www.soscisurvey.de/tools/view-chars.php说没有隐藏的字符。

示例:

DisplayName:名称

ServerName:服务器

PrimarySmtpAddress:电子邮件

EmailAddresses:{电子邮件列表}

我希望你们能帮助我。

2 个答案:

答案 0 :(得分:3)

文件看起来像是Unicode,而您希望它是纯ASCII。

尝试一下:

$file = file_get_contents("file.txt", FILE_TEXT);

或自定义函数:

function file_get_contents_utf8($fn) {
     $content = file_get_contents($fn);
      return mb_convert_encoding($content, 'UTF-8',
          mb_detect_encoding($content, 'UTF-8, ISO-8859-1', true));
}

$file = file_get_contents_utf8("file.txt");

答案 1 :(得分:0)

感谢您的帮助,我能够这样解决问题:

$file = file_get_contents("file.txt");
$file = str_replace(chr(0), "", $file);