0

我目前正在使用 foreach 循环来显示文本文件的内容。但是,我还想显示行的实际内容之前的空格。怎么做?

$loop_var = 0;
    foreach($lines as $line) {  
        $loop_var++;
        if ($loop_var == 1) {
            echo'<div id="h1">' . $line . '</div>';
        }
        if ($loop_var == 2) {
            echo '<div id="h2">' . $line . '</div><br />';
        }
        if ($loop_var > 2) {
            if ($loop_var == 3) { echo '<pre><div id="code">'; }
            echo ($line) . "<br />";
        }
    }
    echo '</pre></div>';

现在,如果文本文件包含以下内容:

blah
blah
    blah
  blah

它显示为:

blah

blah

    blah

  blah
4

3 回答 3

2

使用<pre>标签,并将文本文件的内容打印到此。例子:

print '<pre>'.file_get_contents('filename.txt').'</pre>';

逐行(有条件)

$file = fopen('filename','r');

print '<pre>';
$counter = 0;
while( $line = fgets($file) ){
   if(  /*the condition comes here whitch line you want to print. example: */ $counter >= 2  ){
        print $line;
   }
   if(  /*the condition comes here where wants you end the printing. example: */ $counter >= 10 )
   $counter++;
}
print '</pre>';

fclose($file);
于 2013-04-27T07:14:58.540 回答
1

好吧,如果你愿意,你可以蛮力它......只有在你真的被卡住的情况下!

1) 使用strlen()获取字符串的长度

2) 对字符串中的字符运行一个循环,并使用strpos检查空格

3) 将 html 空间连接到空字符串并预先打印

$str = " whatever is in here ... ";
$spaces = "";
for( $i=0; $i<strlen($str); $i++ ){
    if( strpos( $str, ' ', $i ) ){
        $spaces .= "&nbsp;";
    }
}
于 2013-04-27T07:54:38.620 回答
1

当您从文件中读取文本并再次输出该文本时,空格仍然存在。

但是:如果您正在输出 HTML,并在浏览器中查看输出,则会忽略空格。这只是浏览器显示 html 的正常方式。

使用您的浏览器查看 HTML 源代码(例如,Firefox 中的 CTRL-U)以检查是否是这种情况。

如果您希望在网页中显示空白,可以使用 pre-Tag,或使用 CSS 属性“whitespace” http://www.w3schools.com/cssref/pr_text_white-space.asp

  <pre><?php echo $file_content ?></pre>

或者

  <p style="whitespace:pre;"><?php echo $file_content ?></p>

在此处查看演示:http: //jsfiddle.net/bjelline/CjXMe/

于 2013-04-27T07:18:36.410 回答