while($c=fgets(STDIN)){
if($c===PHP_EOL){
continue;
}
else {
echo $c;
}
}
当从php 5.3.8中的命令行调用上面的代码时,它会在输入文件中打印行,并跳过任何空行。但是,在php 5.2.6中,它不会跳过空行。
是否有任何方法可以更改代码以使其跳过lder版本中的空行?
答案 0 :(得分:2)
差异可能是由php.ini更改引起的,而不是版本。检查您的php配置文件中的auto_detect_line_endings
键,或者您是否有访问权限尝试;
<?php
ini_set("auto_detect_line_endings", true);
?>
auto_detect_line_endings
使用 fgets
。 PHP_EOL
始终根据操作系统获取正确的行尾字符,但如果未将fgets
设置为true,auto_detect_line_endings
可能会失败。
答案 1 :(得分:1)
答案 2 :(得分:0)
$c = str_replace("\r\n", "", $c);
P.S。我不认为php版本很重要。配置似乎有问题。
答案 3 :(得分:0)
如果您不需要尾随空格,可以使用:
$c = rtrim( $c, "\n\r");
if( $c == ''){
continue;
}
如果你这样做,你应该检查字符串长度或使用它:
if( ($c{0} == "\n") || ($c{0} == "\r")){
continue;
}