PHP if语句似乎无法正确比较

时间:2018-10-05 14:42:30

标签: php mysql database mysqli

好的,所以我要从数据库中提取使用哪种字体,该字体是从以前的表单中保存的。我的问题是,即使当我100%复制我从bodyFont回显的内容时,它也不会比较,而只是返回else错误语句。到底是什么原因造成的?难道我有“和”这个事实吗?任何帮助都会很棒。(我在做什么时必须使用全名Arial,“ Helvetica Neue”,Helvetica和sans-serif ETC。

注意:

仅供参考-我有连接,而所有不是代码的问题都给我带来了麻烦,我可以从数据库中提取数据,也可以使用相同的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, &quot;Helvetica Neue&quot;, Helvetica, sans-serif,其中有多余的&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...";
    }
 ?>

1 个答案:

答案 0 :(得分:1)

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

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