我正试图让这个脚本起作用。
这个想法是,如果输入字符串($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";
}
?>
那应该会触发错误,但似乎不是。我做错了什么?
答案 0 :(得分:5)
如果函数strpos
找不到字符串,则返回false
。另请注意,如果在开头找到搜索字符串,则会返回0
。
更改
if (strpos($query, $trigger)) {
到
if (strpos($query, $trigger) !== false) {
答案 1 :(得分:1)
答案 2 :(得分:1)
问题在于:
if (strpos($query, $trigger)) {
如果在索引0处找到字符串,则计算结果为0,这会导致IF语句为false 所以使用
(strpos($query,$trigger) !== false )
答案 3 :(得分:0)
<?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
”关键字以及正确的检查。
希望它有所帮助。