PHP解析语句并将信息存储在变量中

PHP解析语句并将信息存储在变量中,php,parsing,artificial-intelligence,Php,Parsing,Artificial Intelligence,在PHP中,我试图制作一个自然的文本识别系统,它能够以智能的方式识别您所写的内容 我希望它将一个句子与一个“模式”匹配并存储一些信息,例如,如果将{code>在{time}与{person}调度一个{scheduletype}与{code>在下午3点与Ann调度一次会议进行比较,PHP代码将创建值为meeting的变量$scheduletype,$person与Ann和$time于下午3点。如果句子以不同的顺序书写,例如“下午3点安排与安的会议”,是否也可以使它起作用? 我试着在Google和S

在PHP中,我试图制作一个自然的文本识别系统,它能够以智能的方式识别您所写的内容
我希望它将一个句子与一个“模式”匹配并存储一些信息,例如,如果将{code>在{time}与{person}调度一个{scheduletype}与{code>在下午3点与Ann调度一次会议进行比较,PHP代码将创建值为meeting的变量
$scheduletype
$person
与Ann和
$time
于下午3点。如果句子以不同的顺序书写,例如“下午3点安排与安的会议”,是否也可以使它起作用?
我试着在Google和Stack Exchange上查找这个,但不幸的是没有找到任何东西

以下是我当前的代码:

$pattern = 'schedule a ([a-zA-Z0-9\-\.\/\?_=&;]*) with ([a-zA-Z0-9\-\.\/\?_=&;]*) at ([a-zA-Z0-9\-\.\/\?_=&;]*)';
$content = 'shedule a meeting with Ann at 3pm';


$match = preg_match($pattern, strtolower($content) , $found);
print_r($match);

问题是我的代码没有为
$preg\u match
分配任何内容

您可以使用这种命名的捕获组正则表达式:

#Schedule a (?<scheduletype>\w+)\swith\s(?<person>\w+)\sat\s(?<time>\w+)#
#计划a(?\w+)\swith\s(?\w+)\sat\s(?\w+)#
例如:

<?php

$regex= '#Schedule a (?<scheduletype>\w+)\swith\s(?<person>\w+)\sat\s(?<time>\w+)#';
preg_match($regex, 'Schedule a meeting with Ann at 3pm', $matches);

echo $matches['scheduletype']."\n";
echo $matches['person']."\n";
echo $matches['time']."\n";

尝试使用Regex@James这是我的代码:
$pattern='计划a([a-zA-Z0-9\-\.\/\?\=&;]*)和([a-zA-Z0-9\-\.\/\.\.\/\.=&;]*)在([a-zA-Z0-9\-\.\/\.\.\.\/\.=&;]*)处([a-zA-Z0-Z0-9\-\./\.\.-\/\.=&;]*)$内容='安排下午3点与安会面'$match=preg_match($pattern,strtolower($content),$found);打印(匹配)
您可能需要定义一组特定的
scheduletype
s和
person
s,并检查它们是否存在于给定的句子中。
time
应该是可调节的。@James完成了。
$pattern='schedule
$content='schedule
是您的问题,此时…我做了一些编辑,这样我就可以写一些位来替换为花括号:
$regex=str_replace('{','(?\w+,$regex))“#”
@delboy1878uk如果我要添加很多这样的内容,那么编写起来就简单多了。你能举个例子吗?我不知道你为什么要用字符串替换要匹配的模式