【问题标题】:PHP if statement seems to not compare correctlyPHP if 语句似乎没有正确比较
【发布时间】:2018-10-05 14:42:30
【问题描述】:

好的,所以我从我的数据库中提取使用了哪种字体,该数据库是从以前的表单中保存的。我的问题是,即使我 100% 复制我从 bodyFont 回显的内容,它也不会进行比较,而只是下降到 else 错误声明。这到底是什么原因造成的?难道是我有 " 和 ,?

注意:

仅供参考 - 我有我的连接和所有不是给我问题的代码的东西,我可以从数据库中提取并使用相同的 if 语句来处理标题字体,但它只是在名称中使用单词 no 或 " .

 <?php
    echo "$bodyFont";
    if ($bodyFont == 'Arial, "Helvetica Neue", Helvetica, sans-serif') {
            echo "
            1
            ";
        } elseif ($bodyFont == '"Times New Roman", Times, serif') {
            echo "
            2
            ";
        } else {
            echo "<br />error";
        }
?>

Ran Var_Dump and got the following:
string(56) "Arial, "Helvetica Neue", Helvetica, sans-serif" - PULLED FROM DATABASE
string(46) "Arial, "Helvetica Neue", Helvetica, sans-serif" - PULLED FROM VAR

56 和 46...如何解决?

<?php
$one = 'Arial, "Helvetica Neue", Helvetica, sans-serif';
$bodyFontstrip = strip_tags($bodyFont);

var_dump($bodyFont);
echo "<br />";
var_dump($one);


    if ($bodyFontstrip == $one) {
            echo "Arial";
        }  else {
            echo "<br />error";
        }
?>

好的,我知道发生了什么: 我从服务器中提取的$bodyFont 原来是Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif,其中包含额外的&amp;quot;。我现在必须想办法删除它。

为了解决问题,我按照 GrumpyCrouton 下面的建议进行了修复,并使用了 html_entity_decode($bodyFont)。

固定工作代码:

<?php
$one = 'Arial, "Helvetica Neue", Helvetica, sans-serif';
$two = '"Times New Roman", Times, serif';
$bodyFontclean = html_entity_decode($bodyFont);

var_dump($bodyFont);
echo "<br />";
var_dump($one);
echo "<br />";
var_dump($two);


if ($bodyFontclean == $one) {
        echo "Arial";
    }  elseif ($bodyFontclean == $two){
        echo "Times";
    } else {
        echo "error...";
    }
 ?>

【问题讨论】:

  • 那么,$bodyFont究竟包含什么?
  • $bodyFont 在哪里设置,echo "$bodyFont"; 的结果是什么?
  • var_dump() 并将其编辑到这个问题中。
  • 我都说了。我正在使用 ECHO 以及 DATABASE 中显示的内容,即它应该做什么。回声从数据库中提取 - Arial,“Helvetica Neue”,Helvetica,sans-serif,即使我将它设置为等于它的自身,它仍然会跳转到错误。
  • 随便$bodyFont = html_entity_decode($bodyFont)

标签: php mysql database mysqli


【解决方案1】:

您似乎已将 HTML 编码值插入到您的数据库中。不要这样做。

你应该在 OUTPUT 而不是 INPUT 上进行 HTML 编码。

【讨论】:

  • 我明白你在说什么,我会这样做!我在输入中使用了 \"。
  • 对于转义 sql,您应该使用参数化查询,但这是另一个主题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-20
  • 1970-01-01
  • 1970-01-01
  • 2018-08-03
  • 1970-01-01
  • 1970-01-01
  • 2013-06-20
相关资源
最近更新 更多