PHP评估特殊字符到实际可用

时间:2015-06-10 10:55:31

标签: php csv

我怀疑这是不允许的

我正在尝试根据用户选择过滤数据..

以下是根据用户输入动态更改代码的变量。

有时变量$ p具有

$p="$line[10]=='MICRO'";

$p="$line[10]=='MICRO' || $line[10]=='NO'";

$p="$line[10]=='MBTS' || $line[10]=='MICRO' || $line[10]=='NO' || $line[10]=='ODM' && $line[9]=='HUBSITE' || $line[10]=='NO'";

只有 $ p变量数据才会根据用户的选择动态变化。

并且$ line数组中的数字是csv文件的列号。

它的作用是在变量中显示值列表,并且必须打印这些值 在if条件

这里我使用的是CSV文件,在csv文件中,我使用上述变量过滤了particualr列。

<?php 
$circle_sheet="DETAILS.csv";
$f = fopen($circle_sheet, "r");
while (($line = fgetcsv($f)) !== false)
{
    $p=eval($p);
    if(${$p})
    {
        echo "<tr>";
        foreach($line as $cell)
        {   
            echo "<td style='color:white;'>" . htmlspecialchars($cell) . "</td>";
        }echo "</tr>\n";
    }
}
?>

在上面的while循环中if条件错误,$ p变量数据必须在if中回显..

但是我得到了 Parse错误:语法错误,意外的T_ECHO

1 个答案:

答案 0 :(得分:-1)

如果我的问题正确,你可以做(如果eval(“return”。$ p))。但是,不建议评估用户输入。 php documentation for eval

像这样:

<?php 
$circle_sheet="DETAILS.csv";
$f = fopen($circle_sheet, "r");
while (($line = fgetcsv($f)) !== false)
{
    if(eval("return ".$p))
    {
        echo "<tr>";
        foreach($line as $cell)
        {   
            echo "<td style='color:white;'>" . htmlspecialchars($cell) . "</td>";
        }echo "</tr>\n";
    }
}
?>