Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP文件格式问题:如何修复写入输出中的不一致性?_Php - Fatal编程技术网

PHP文件格式问题:如何修复写入输出中的不一致性?

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'

在一个.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', '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) ;