我有一个输入文本区域,在填写和发送时,将输入的内容放入变量中
$input
Run Code Online (Sandbox Code Playgroud)
然后通过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";
}
?>
Run Code Online (Sandbox Code Playgroud)
它确实有效,但方向错误.我输入的每个字母都是'你写的'.如果用户输入一个,我只希望它回应这个.否则,回声'你没写'.
编辑:当我尝试==而不是=它说'你没有为所有东西写'.即使我打字了.
编辑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>
Run Code Online (Sandbox Code Playgroud)
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";
}
?>
Run Code Online (Sandbox Code Playgroud)
解:
修剪()
Dea*_*ado 10
==是比较的条件.=是赋值运算符.
if($input == "a"){
echo "You wrote a";
}else{
echo "You did not write a";
}
Run Code Online (Sandbox Code Playgroud)
您可能希望使用strcmp,因为它是二进制安全的.
if(strcmp($input,'a')==0){
echo "You wrote a";
}else{
echo "You did not write a";
}
Run Code Online (Sandbox Code Playgroud)
http://php.net/manual/en/language.operators.comparison.php
http://php.net/manual/en/function.strcmp.php
编辑: 在这里另一个刺 - 在你发布的代码中(我复制粘贴它)默认情况下你的textarea中有空格.
不要在和标签之间放置换行符.这会在'a'的开头添加空格.
删除它使它在我的测试中正常工作.
编辑:根据接受的答案和重新发布的代码,trim()实际上是删除所有前导和尾随空格的正确函数.
你的问题是=和==运营商之间的混淆.
如果要比较PHP中的两个值,则必须使用==(即两个等号一起使用).
使用本身就是一个单一的等号将设置到左边的值的权值(根据其在代码示例的第一行使用).
请参阅php手册上的这个页面:http://www.php.net/manual/en/language.operators.comparison.php
注意,还有一个tripple-equal运算符===,它也用于比较,您还想比较双方的数据类型.对于基本用途,双倍相等通常就足够了,但手册页将为您提供有关两者之间差异的更多信息.
[编辑]
重新编辑 - 所有评论都表明==不是=正确的.单等运算符是错误的使用方法.如果你仍然遇到双等运算符的问题,那么$input实际上并不相等a.
在这种情况下,您可能需要调试输入.假设您的echo $input;线确实显示a,我会说最有可能的情况是您正在输入一些空白区域,可能是回车或类似的东西.
为了证明这一点,您可能希望像这样打印:
print "<pre>[".$input."]</pre>";
Run Code Online (Sandbox Code Playgroud)
这将显示您可能输入的任何意外的额外字符.
如果您不担心空白区域,请使用该trim()功能来消除它.
您还可以使用函数strlen()来检查字符串的长度等.
[再次编辑]
好的,看看你的HTML代码,我会说这绝对是白色空间问题.
<textarea name="textarea" id="textarea">
</textarea>
Run Code Online (Sandbox Code Playgroud)
这将导致使用换行符创建textarea作为其默认内容,因为开始和结束<textarea>标记位于单独的行上.如果您只是输入a它,您实际提交的内容将a加上换行符.
trim()在检查之前,最好的建议可能是输入.
| 归档时间: |
|
| 查看次数: |
71493 次 |
| 最近记录: |