您正在寻找一个正则表达式解决方案来查找正在运行的文本中的一个句子/一组单词。句子有时可以在一行中或包含在两行中。请帮忙。
针对此文字运行时,会有匹配:
案件已经关闭,并且已创建报告。
但是,当针对此文本运行时,它无法匹配:
案件已经发生了 关闭和报告
已创建
我尝试了以下内容:
$t_pattern = "case has been closed";
preg_match($t_pattern, $var['subject'], $regs)
基本上,我正在搜索电子邮件正文中的句子以关闭票证。响应从支持服务单系统发送。虽然它在整个句子是一行(如示例1)时有效,但在类似于示例2的情况下失败。
答案 0 :(得分:1)
没有理由使用正则表达式搜索特定的字符串。
只需使用regex replace来规范化换行符(以及其他空格),然后使用简单的substring search:
$t_pattern = "case has been closed";
$subject = preg_replace('/\s+/', " ", $var['subject']);
strpos($subject, $t_pattern)
答案 1 :(得分:0)
你应该没问题
$t_pattern = "/case\s+has\s+been\s+closed/";
\s+
匹配一个或多个空白字符,包括换行符。