查找某个字符串后出现的字符串

时间:2014-07-17 15:11:44

标签: php regex string preg-match substring

我正在尝试检测电子邮件的优先级(在变量中以纯文本形式存储),每封电子邮件都有一个“评论”部分,我希望在其中搜索“紧急”或“高”等字词评论区域,但没有其他地方,因为这些术语在其他地方。

到目前为止,我一直在做的是:

if (stristr($body, 'Comment: urgent')){
    $urgent = true;
    echo '<b>Urgent.</b>';
}

显然,这不适用于“紧急”这样的句子,例如“这是紧急的”。

如何在子字符串“Comment:”之后搜索$ body?

谢谢!

3 个答案:

答案 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";
}