1

我有一个代码来搜索数组键,但只有当消息是确切的消息时,我希望它使用 strpos 以便它可以检测到消息但我不知道该怎么做:

我的代码:

$message = $_POST['message'];
$responses = array("hi" => "whats up?");
if (array_key_exists($message,$responses)){
$msg = strtolower($message);
$answer = $responses[$msg];
echo $answer;
}

所以这只有在整个发布的数据都是“hi”时才有效。我希望它使用 strpos,这样它就可以在任何地方检测到 hi,我该怎么做?

4

2 回答 2

1

我不是 100% 确定,但这是你想要的吗?

$foundKey = null;
foreach ($responses as $key => $value) {
    if (strpos($message, $key) !== false) {
        $foundKey = $key;
        break;
    }
}
if ($foundKey !== null) {
    echo "Found key: " . $responses[$key];
}

编辑

如果你想要一个不区分大小写的版本,当然你可以使用它:

$foundKey = null;
foreach ($responses as $key => $value) {
    if (stripos($message, $key) !== false) {
        $foundKey = strtolower($key);
        break;
    }
}
if ($foundKey !== null) {
    echo "Found key: " . $responses[$key];
}
于 2012-08-13T06:40:47.537 回答
0

strpos(firststring,secondstring,startposition[Optional]) 函数返回 num。如果 num>=0 表示第一个字符串中的第二个字符串。

$message = $_POST['message'];
$responses = array("hi" => "whats up?");
if (strpos($message,$responses)>=0){
$msg = strtolower($message);
$answer = $responses[$msg];
echo $answer;
}
于 2012-08-13T06:43:34.663 回答