【问题标题】:PHP Evaluate Special Character to actual vairable [duplicate]PHP将特殊字符评估为实际变量[重复]
【发布时间】:2015-08-25 13:58:18
【问题描述】:

我怀疑这是不允许的

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

这是代码根据用户输入动态变化的变量。

有时变量 $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 文件中我使用上面的变量过滤特定的列。

<?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 Block中回显..

但我收到 解析错误:语法错误,意外的 T_ECHO

【问题讨论】:

  • 你想通过使用 echo 作为条件来测试什么?
  • 永远不要相信用户输入!
  • @MHakvoort 但输入选择是静态的...我已经在差异数组中设置了区分用户选择的条件...以便用户选择仅在一个变量中处理...
  • @Quentin 根据用户在 if 条件中的选择回显……过滤后显示数据……csv文件
  • @maheshCholleti — 你实际上在测试什么?你期待echo $something的真假告诉你什么?

标签: php csv


【解决方案1】:

如果我的问题是正确的,你可以做 if(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";
    }
}
?>

【讨论】:

  • 如何返回 $p 值...?如果条件...?
  • eval("return ".$p) 如果满足 $p 中的条件则返回 true,否则返回 false。 if(eval("return ".$p)) 将执行 if 如果 $p 满足的内部。
  • 挑战是......如何在 if 条件块中执行返回值......你能帮我写代码吗......?
  • 哪个返回值?如果您进入 if,则 $p 的值是 true。如果 $p 的计算结果为 true,则 if 块中的代码将被执行。
  • No..ur 没有明白我的意思...我想在 if 块中回显 $p 的值,以便根据 $p 的值过滤 csv 文件...
猜你喜欢
  • 2020-02-29
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-05
  • 1970-01-01
  • 2014-08-31
  • 1970-01-01
相关资源
最近更新 更多