【问题标题】:What format does fget(); return in PHP? (Evaluating String)fget(); 是什么格式在 PHP 中返回? (评估字符串)
【发布时间】:2017-02-10 15:58:40
【问题描述】:

我正在尝试执行一个 IF 语句,该语句根据从文件中读取的字符串(字符串“ROTTEN”或字符串“FRESH”)选择显示哪个图像。但是,即使文件中有“ROTTEN”,无论如何它总是会转到其他部分。我是否正确评估了 IF 语句?它读取正确的行,我肯定知道。

if(strcasecmp(fgets($myfile), 'ROTTEN') == 0){
    echo "<img src='https://webster.cs.washington.edu/images/rotten.gif' alt='Rotten' />";
}else{
    echo "<img src='https://webster.cs.washington.edu/images/fresh.gif' alt='Fresh' />";
};

【问题讨论】:

  • 'fgets($myfile)' - 变量不是用单引号计算的,也不知道为什么你甚至将这些用于函数。只需删除它们if(strcasecmp(fgets($myfile)。编辑:根据您的原始帖子stackoverflow.com/revisions/42163578/1
  • 这也不起作用if(fgets($myfile) == "ROTTEN")
  • 我们也不知道$myfile 是什么,它的分配位置以及它的实际内容。任何状况之下;你在下面得到了答案,问他们。
  • echo/var_dump fgets($myfile),你得到了什么?
  • 当其他人访问该问题(未来的访问者)时,他们会立即看到发布的代码,而不是再次看到更改日志;他们可能不知道他们,记住这一点。我只是希望回答者免于潜在的反对票。有些人确实是这样想的:“周围没有引号,所以为什么要回答?” ;-) 只是想在这里做一个好撒玛利亚人。编辑:(我的)cmets也是如此。 @DakotaWagner

标签: php string file


【解决方案1】:

你可以使用 strpos() 函数:

if(strpos(fgets($myfile), 'ROTTEN') !== false){
    echo "<img src='https://webster.cs.washington.edu/images/rotten.gif' alt='Rotten' />";
}else{
    echo "<img src='https://webster.cs.washington.edu/images/fresh.gif' alt='Fresh' />";
};

【讨论】:

    【解决方案2】:

    fgets 将 a 行作为字符串返回,如果您定义了长度,则返回 1kB。这也包括 EOL,所以你比较不会是真的。您可以使用length参数或strpos或substr来检查它。

    【讨论】:

    • 或者修剪一下。这将删除两边的所有空格。
    猜你喜欢
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多