0

「データがすべてタブの場合、行が印刷されない」を行う方法は?

タブのみを含む行を印刷したくない場合、コードをどのように変更すればよいですか?

どういうわけか preg_match を使用することを考えていました、つまりpreg_match('#(/\t+/)#',$lines[$i])

しかし、タブ区切りのファイルをテーブルに変換するため、コードが壊れます。開始<tr>タグを削除すると、そのように機能します(タブ行はありません)が、<tr>その後にクラスを配置できません。

PHP:

    echo "<table id='schedule_table'>"; 

//split into array by return\linefeed
$lines=explode("\r\n",$file);
//replace digits with class
$lines=preg_replace('#(\d+)#','<span class="table_digit">$1</span>',$lines);
//loop through rows
for($i=0;$i<count($lines);$i++) 
{ 
//if not blank then print row
if($lines[$i]!=""&&$lines[$i]!=" "&&$lines[$i]!=null)
    {
    echo "<tr class='schedule_row' value='$lines[$i]'>";
    //if row is 0 cell type is header
    $cell_type="td";
    $cell_class="schedule_cell";
    if($i==0)
    {
        $cell_type="th";
        $cell_class="schedule_hcell";
    }
    //end if

    //split into array by tabs
    $items=explode("\t",$lines[$i]);
    //loop through cells 
    for($j=0;$j<count($items);$j++) 
    { 
        //if not blank then print cell
        if($items[$j]!=""&&$items[$j]!=" ")
            {
            echo "<$cell_type class=$cell_class>".$items[$j]."</$cell_type>"; 
            }
    } 
    echo "</tr>"; 
    }
} 
echo "</table>"; 
4

1 に答える 1

4

正規表現を固定します。

preg_match('/^\t+$/', $line)

コードでこの正規表現を次のように使用します。

if ($lines[$i]!="" && $lines[$i]!=" " && !preg_match('/^\t+$/', $line[$i]))
于 2012-04-25T18:09:15.897 に答える