我有一个从交换服务器的管理外壳生成的.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:{电子邮件列表}
我希望你们能帮助我。
答案 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);