我正在尝试检测电子邮件的优先级(在变量中以纯文本形式存储),每封电子邮件都有一个“评论”部分,我希望在其中搜索“紧急”或“高”等字词评论区域,但没有其他地方,因为这些术语在其他地方。
到目前为止,我一直在做的是:
if (stristr($body, 'Comment: urgent')){
$urgent = true;
echo '<b>Urgent.</b>';
}
显然,这不适用于“紧急”这样的句子,例如“这是紧急的”。
如何在子字符串“Comment:”之后搜索$ body?
谢谢!
答案 0 :(得分:4)
您可以使用正则表达式:
<?php
$string = 'rweiuowreuiwuier Comment: higewrwre werwrewre high';
if (preg_match('#Comment: (urgent|high)#i',$string)){
$urgent = true;
echo '<b>Urgent.</b>';
}
但是你应该考虑是否有人把身体Comment: high
放进了这封邮件也会被视为高
答案 1 :(得分:2)
以下功能 - 可以使用新名称,需要三个参数。
$a being the Start Frame
$b being the End Frame
$s being the full string
$a would be 'Comment: '
$b would be whatever is at the end of your comments section
$s would be the email string
返回值将是中间的字符串,然后在返回值上运行stripos。
function getMiddle($a, $b, $s) {
return strstr(substr($s, strpos($s, $a) + strlen($a)), $b, true);
}
示例:#注意,第二个参数需要专门用于您的电子邮件#
if (stripos(getMiddle('Comments: ', 'Sincerely', $email), 'urgent') === false) {
echo "URGENT";
}
答案 2 :(得分:-1)
你可以找到一个带有strpos函数的字符串
$mystring = 'Comment: urgent';
$find_string = 'urgent';
$pos = strpos($mystring, $find_string);
if ($pos !== false) {
echo "I find it!";
} else {
echo "Not found";
}