我正在努力让这个脚本发挥作用。
其思想是,如果输入字符串($query)
不以'/t'
开头,并且包含$trigger
单词中的一个,则设置$error
。
我不能让这个工作,我不知道为什么。
<?php
$error = false;
$triggers = array('sell', 'buy', 'trade', 'trading');
$query = 'buying stuff';
if (!empty($query)) {
if (substr($query, 0, 2) != '/t') {
foreach ($triggers as $trigger) {
if (strpos($query, $trigger)) {
$error = true;
}
}
}
}
if ($error) {
echo "fail";
}
else {
echo "pass";
}
?>
这本应该引发错误,但事实并非如此。我做错了什么?
如果函数strpos
找不到字符串,则返回false
。还要注意,如果搜索字符串在一开始就被找到,则返回0
。
更改
if (strpos($query, $trigger)) {
至
if (strpos($query, $trigger) !== false) {
将其更改为
if (strpos($query, $trigger) !==false ) {
检查strpos如何工作
问题出在这里:
if (strpos($query, $trigger)) {
如果在索引0处找到字符串,这将导致if语句为false,则计算结果为0所以使用
(strpos($query,$trigger) !== false )
<?php
$error = false;
$triggers = array('sell', 'buy', 'trade', 'trading');
$query = 'buying stuff';
if (!empty($query)) {
if (substr($query, 0, 2) != '/t') {
foreach ($triggers as $trigger) {
if (strpos($query, $trigger) !== false) {
$error = true;
break;
}
}
}
}
if ($error) {
echo "fail";
}
else {
echo "pass";
}
?>
请使用"break
"关键字,并进行适当的检查。
希望能有所帮助。