2014-07-17 170 views
0

我試圖檢測電子郵件的優先級(將它們作爲純文本存儲在變量中),每封電子郵件都有一個「註釋」部分,我正在尋找在評論區域內的「緊急」或「高」這些術語,而不是其他地方,因爲這些術語在其他地方。查找特定字符串後出現的字符串

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

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

顯然,這並不案件工作,其中「緊急」是一句話,「這是當務之急。」

如何在子字符串「Comment:」之後通過$ body進行搜索?

謝謝!

+1

使用stripos函數()函數 - http://php.net/manual/en/function .stripos.php – WillardSolutions

回答

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); 
} 

例子:#Note,第二個參數將需要專門到您的電子郵件#

if (stripos(getMiddle('Comments: ', 'Sincerely', $email), 'urgent') === false) { 
    echo "URGENT"; 
} 
+1

太棒了,非常感謝! – Charkizard

+0

幸運的是,我有這個爲我自己的需要,只是不得不爲自己修改它:D – t3chguy

4

您可以使用正則表達式:

<?php 

$string = 'rweiuowreuiwuier Comment: higewrwre werwrewre high'; 

if (preg_match('#Comment: (urgent|high)#i',$string)){ 
    $urgent = true; 
    echo '<b>Urgent.</b>'; 
} 

但是,如果把體內Comment: high有人這封郵件也將被認爲是高

+0

良好的通話,但很多人傾向於儘可能避免RegEx,因此我的解決方案,看到答案;仍然投票,因爲它是一個功能答案。 – t3chguy

-1

你可以找到與功能strpos一個字符串,你應該考慮

$mystring = 'Comment: urgent'; 
    $find_string = 'urgent'; 
    $pos = strpos($mystring, $find_string); 

if ($pos !== false) { 
    echo "I find it!"; 
} else { 
    echo "Not found"; 
} 
+0

這並不能回答他只應該從「評論:」中發現,因此不是一個正確的答案。因爲他的字符串不會只是'Comment:urgent' – t3chguy

+0

但他想在「Comment:」字符串中找到緊急。 –

+0

不,'Comment:'是字符串的一部分,他希望在該部分後面找到URGENT,而不是在它之前。 – t3chguy

相關問題