strcasecmp()在我的php脚本中工作不正常
在下面的代码片段中,我使用了strcasecmp函数。该函数适用于名匹配,但不适用于姓匹配 例如,如果名称文件中的名称为Joe Black,名称为submit空格,则$xxx和$yyy的值分别为-3和-6。如果提交名称,我得到$xxx=0和$yyy=-1 有人能告诉我我错过了什么或做错了什么吗 谢谢 克里斯 您的问题是fgets在读取的行中包含行尾字符。这意味着Joe Black的$linedata实际上是Joe Black,即它包含一个换行符。因此,$lastName以黑色结束\n而不是黑色 作为一个快速修复方法,我将使用而不是fgets,指定\n作为分隔符。这与fgets的工作原理非常相似,只是它不会将分隔符读入返回的字符串中 或者保留你的fgets,把新行从它给你的字符串中去掉。。。正如@kavisiegel提到的,这是一种简单的方法,尽管从技术上来说,我想会更快 您的问题是,fgets在读取的行中包含行尾字符。这意味着Joe Black的$linedata实际上是Joe Black,即它包含一个换行符。因此,$lastName以黑色结束\n而不是黑色 作为一个快速修复方法,我将使用而不是fgets,指定\n作为分隔符。这与fgets的工作原理非常相似,只是它不会将分隔符读入返回的字符串中strcasecmp()在我的php脚本中工作不正常,php,Php,在下面的代码片段中,我使用了strcasecmp函数。该函数适用于名匹配,但不适用于姓匹配 例如,如果名称文件中的名称为Joe Black,名称为submit空格,则$xxx和$yyy的值分别为-3和-6。如果提交名称,我得到$xxx=0和$yyy=-1 有人能告诉我我错过了什么或做错了什么吗 谢谢 克里斯 您的问题是fgets在读取的行中包含行尾字符。这意味着Joe Black的$linedata实际上是Joe Black,即它包含一个换行符。因此,$lastName以黑色结束\n而不是黑色
或者保留你的fgets,把新行从它给你的字符串中去掉。。。正如@kavisiegel提到的,这是一种简单的方法,尽管从技术上来说,我想会更快 执行var_dump$lname、$lastName并发布结果执行var_dump$lname、$lastName并发布结果可选,您可以使用trim进行清理。感谢您的解释和建议。。。。我用我已经有的修剪。或者,你可以用修剪来清洁它。谢谢你的解释和建议。。。。我用我已经拥有的东西去修剪。
<?php
$fname = $_POST["fname"];
$lname = $_POST["lname"];
print "First Name: " .$fname;
print "< br/>";
print "Last Name: " . $lname;
$namesFile = "namesFile.txt";
$numLines = count(file($namesFile));
print "< br/>";
print "Lines: " . $numLines;
$fh = fopen ($psswrdFile, "r");
for ($i=1; $i <= $numLines; $i++)
{
$lineData = fgets($fh);
print "< br/>";
print $lineData;
list($firstName, $lastName) = explode(" ", $lineData);
print "First Name: " .$firstName;
print "Last Name: " . $lastName;
$xxx = strcasecmp($fname,$firstName);
print "name " . $xxx;
$yyy = strcasecmp($lname, $lastName);
print "password" . $yyy;
}
?>