PHP preg_replace返回不同的值
我有两个声明 1) 我喜欢汽车。 2) 我穿像国王一样的衣服 在这两种说法中,like这个词的意思是不同的。所以我想写一个函数,如果我传递了第一条语句,它应该返回'a',我传递了第二条语句,它应该返回'b'PHP preg_replace返回不同的值,php,regex,preg-match,Php,Regex,Preg Match,我有两个声明 1) 我喜欢汽车。 2) 我穿像国王一样的衣服 在这两种说法中,like这个词的意思是不同的。所以我想写一个函数,如果我传递了第一条语句,它应该返回'a',我传递了第二条语句,它应该返回'b' function chkStatement($stmt) { //function body } chkStatement('I like an apple'); chkStatement('I like Mango'); chkStatement('I
function chkStatement($stmt) {
//function body
}
chkStatement('I like an apple');
chkStatement('I like Mango');
chkStatement('I fly in air like a bird');
谢谢像
preg\u replace
这样的简单PHP函数不允许您根据单词使用的上下文返回不同的值
您将希望了解自然语言处理的广阔领域。祝你好运 是正确的,将like
识别为动词的唯一方法是with
但是,如果我们对此进行了足够的简化,您可以在单词之前检查I
、you
、we
、或它们
。你不会检查它是否是一个动词,应该有很多例外。您可以使用以下内容:
function chkStatement($stmt) {
if (preg_match('/\b(?:(I|You|We|They)\s+)?like\b/i', $stmt, $matches)) {
if (isset($matches[1])) return "a";
return "b";
} else {
return false;
}
}
echo chkStatement('I like an apple');
echo chkStatement('I like Mango');
echo chkStatement('I fly in air like a bird');
echo chkStatement('Something else');
1) 你所说的第一句话是什么意思?什么分隔语句?像这样station=I Like car每次都会发送单独的字符串,那么chkStatement如何计算方法调用的发生?首先,这里不需要正则表达式。。。您可以查看字符串是否包含单词like或not。。。第二,您需要一个全局变量来计算方法被调用的次数……chkStatement(“我喜欢苹果”);这将重新运行a.chkStatement(“我喜欢芒果”);返回a。chkStatement(“我像鸟一样在空中飞翔”);返回b等,请详细说明。或者给我举个例子。1)就像鸟一样,我想飞2)我喜欢汽车;你买什么回来1)和买什么回来2)?对于两者,like的位置是相同的,但上下文不是。。。现在你如何检测上下文,因为你需要自然语言处理。。。