PHP文件格式问题:如何修复写入输出中的不一致性?
在一个.txt文件中,我列出了我希望在Mac终端中阻止的网站。我称之为“block_list.txt”PHP文件格式问题:如何修复写入输出中的不一致性?,php,Php,在一个.txt文件中,我列出了我希望在Mac终端中阻止的网站。我称之为“block_list.txt” rapradar.com hiphopdx.com thisis50.com allhiphop.com 我已经写了一段代码,打开“block_list.txt”文件读取每一行,并将每个网站转换成我认为最有效的格式,用于我的计算机命令行阻止网站。我称之为format_list.txt <?php $final_block_list = fopen('format_list.txt'
rapradar.com
hiphopdx.com
thisis50.com
allhiphop.com
我已经写了一段代码,打开“block_list.txt”文件读取每一行,并将每个网站转换成我认为最有效的格式,用于我的计算机命令行阻止网站。我称之为format_list.txt
<?php
$final_block_list = fopen('format_list.txt', 'rb+');
$handle = fopen('block_list.txt','rb+');
//$line = fgets($handle);
foreach(file('block_list.txt') as $line) {
//fwrite($final_block_list,
fwrite($final_block_list,
"0.0.0.0 $line" .
"0.0.0.0 www.$line" .
"0.0.0.0 http://$line" .
"127.0.0.1 $line" .
"127.0.0.1 www.$line" .
"127.0.0.1 http://$line ".
"\n") ;
}
如何修复输出“allhiphop.com”的最后一行,使其格式与前三个网站的其他网站相同关键是您忘记了在条目之间添加换行符。仅仅连接一个字符串并不会将它们添加到任何地方。这应该起作用:
fwrite($final_block_list,
"0.0.0.0 $line" . PHP_EOL .
"0.0.0.0 www.$line" . PHP_EOL .
"0.0.0.0 http://$line" . PHP_EOL .
"127.0.0.1 $line" . PHP_EOL .
"127.0.0.1 www.$line" . PHP_EOL .
"127.0.0.1 http://$line ". PHP_EOL . PHP_EOL) ;
为什么不在条目之间使用换行符呢?当前的代码工作得很好…您的fwrite中唯一的换行符是在最末尾…http://变体一开始就不应该在那里。(这样做的目的是将主机名解析到本地环回接口,绕过“真正的”DNS。URL不是主机名。)并且为同一主机名指定两个不同的IP地址也是无稽之谈。我不太愿意就此发表这个问题。显然,我不想让一个问题被打上否定的标记。如果有人能告诉我这篇文章有什么问题,请让我知道,这样我就可以提出更合适的问题。我不知道在这种情况下还可以求助于谁作为寻找解决方案的资源。同时,非常感谢所有回答的人。由于PHP允许多行字符串,您也可以将
“.PHP\u EOL.
每行保留下来。这是一个成功的问题解决方案。OP需要将此标记为答案
fwrite($final_block_list,
"0.0.0.0 $line" . PHP_EOL .
"0.0.0.0 www.$line" . PHP_EOL .
"0.0.0.0 http://$line" . PHP_EOL .
"127.0.0.1 $line" . PHP_EOL .
"127.0.0.1 www.$line" . PHP_EOL .
"127.0.0.1 http://$line ". PHP_EOL . PHP_EOL) ;