我有一个输入文本区域,当填写并发送时,将输入的内容放入变量
$input
然后通过if语句检查它是否是字母a。如果它是回声 - 你写了字母a,否则 - 你没有写字母a。
<?php
$input = $_POST["textarea"];
echo $input;
echo "<br />";
if($input = "a"){
echo "You wrote a";
}else{
echo "You did not write a";
}
?>
它确实有效,但方向错误。我输入的每个字母都是'你写的'。如果用户输入一个,我只希望它回应这个。否则,回声'你没有写'。
编辑:当我尝试==而不是=它说'你没有为所有东西写'。即使我输入了一个。
编辑2:当我尝试字符串比较参数时,它没有用。 我出错的任何建议?
两页的完整文章:
的index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>Fun Translator</h1>
<form method="post" action="query.php">
<textarea name="textarea" id="textarea">
</textarea>
<input type="submit" name="send" value="Translate" />
</form>
</body>
</html>
query.php
<?php
$input = $_POST["textarea"];
echo $input;
echo "<br />";
if(strcmp($input,'a')==0){
echo "You wrote a";
}else{
echo "You did not write a";
}
?>
解决方案:
修剪()
答案 0 :(得分:9)
==是比较的条件。 =是赋值运算符。
if($input == "a"){
echo "You wrote a";
}else{
echo "You did not write a";
}
您可能希望使用strcmp,因为它是二进制安全的。
if(strcmp($input,'a')==0){
echo "You wrote a";
}else{
echo "You did not write a";
}
http://php.net/manual/en/language.operators.comparison.php
http://php.net/manual/en/function.strcmp.php
编辑:在此处再次尝试 - 在您发布的代码中(我复制粘贴它)默认情况下,您的textarea中有空格。
不要在和标签之间放置换行符。这会在'a'的开头添加空格。
删除它使我在测试中正常工作。
编辑:根据接受的答案和重新发布的代码,trim()实际上是删除所有前导和尾随空格的正确函数。
答案 1 :(得分:7)
您的问题是=
和==
运营商之间的混淆。
如果要在PHP中比较两个值,则必须使用==
(即两个等号一起)。
单独使用一个等号将右侧的值设置为左侧的值(根据代码示例第一行中的使用)。
请参阅php手册上的此页:http://www.php.net/manual/en/language.operators.comparison.php
注意,还有一个tripple-equal operator ===
,它也用于比较,你也想要比较双方的数据类型。对于基本用途,双倍相等通常就足够了,但手册页将为您提供有关两者之间差异的更多信息。
<强> [编辑] 强>
重新编辑 - 提示==
代替=
的所有评论都是正确的。单等运算符是错误的使用方法。如果您仍然遇到双等运算符问题,那么$input
实际上不等于a
。
在这种情况下,您可能需要调试输入。假设您的echo $input;
行确实显示a
,我会说最有可能的情况是您正在输入一些空格,可能是回车或类似的东西。
为了证明这一点,你可能想要这样打印:
print "<pre>[".$input."]</pre>";
这将显示您可能输入的任何意外的额外字符。
如果您不担心空白区域,请使用trim()
功能将其删除。
您还可以使用strlen()
之类的函数来检查字符串的长度等等。
[再次编辑]
好的,看看你的HTML代码,我会说这肯定是白色空间问题。
<textarea name="textarea" id="textarea">
</textarea>
这将导致使用换行符创建textarea作为其默认内容,因为打开和关闭<textarea>
标记位于不同的行上。如果您只是在其中输入a
,那么您实际提交的内容将是a
加上换行符。
在检查输入之前,最好的建议可能是trim()
。
答案 2 :(得分:2)
使用运算符==
代替=
答案 3 :(得分:0)