【问题标题】:PHP - If statement comparing string with contents of txt filePHP - If 语句将字符串与 txt 文件的内容进行比较
【发布时间】:2019-02-27 16:21:27
【问题描述】:

我进行了一些研究,但找不到问题的明确答案。这就是我所拥有的:

<?php
    session_start();
    $gen_num = file_get_contents($_SESSION['filename']);
    $inp_num = $_POST['form-input'];
    if($gen_num === $inp_num){
        echo "Yes! The numbers match!";
    } else {
        echo "No, the numbers do not match&hellip;";
    }
?>

'filename' 是一串数字,'form-input' 来自之前提交的 HTML 表单。

为什么字符串相同时 IF 测试会失败?

编辑 简单的修复是修剪 $gen_num。另外,我没有足够明确地说“文件名”是一个 .txt 文件,其中包含一串数字以及一些看不见的特殊字符。

感谢您的帮助!

【问题讨论】:

  • 你能var_dump() 告诉我们你得到了什么吗?
  • 您是否尝试过仅使用 == 进行比较? php.net/manual/en/language.operators.comparison.php
  • 试试trim($gen_num) === trim($inp_num),因为特殊字符的出现可能是问题所在。
  • “文件名”的位置有一串数字...所以没有.txt?我很确定它 file_get_contents 返回 false 然后
  • trim() 有效!我想有一些空白/特殊字符弄乱了它。谢谢大家的快速回复

标签: php if-statement string-comparison


【解决方案1】:

如果$_SESSION['filename'] 是你所说的一串数字,那么没有文件名结尾。
你应该做那行:

$gen_num = file_get_contents($_SESSION['filename'] . ".txt");

否则 file_get_contents 将找不到仅以数字作为名称的文件并返回 false。
这就是数字不匹配的原因。

【讨论】:

  • 对不起,我不清楚。设置“文件名”以捕获变量内的“.txt”(即文件名 = something.txt)
  • 在那种情况下 $filename 没有有一串数字是吗?
【解决方案2】:

如果这两个值是整数,我会使用 floor() 并使用 ==

并捕获 0 个异常

【讨论】:

    猜你喜欢
    • 2022-01-06
    • 1970-01-01
    • 2016-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 2017-01-08
    相关资源
    最近更新 更多