2012-08-14 55 views
0

我需要一些幫助,我的PHP腳本。 所以,這是交易。檢查preg_match結果與其他值?

我有一個的preg_match它會檢查.txt文件下面的文本,改變每個30分鐘左右:LYBE_TWR,LYBE_APP,LYBA_CTR,LYPG_TWR,LYPG_APP,LYTV_TWR,LYNI_APP)

它運行完美,得到上面的字符串,如果他們存在。

但我需要做的更進一步,並檢查七個組合中哪一個已被找到,因爲並非所有時間都存在。 示例: 當前文本文件包含LYBE_TWR,LYBE_APP,LYPG_TWR。 preg_match做它的事情,我可以回顯3個值,但我需要這個。

LYBE_TWR : PRESENT/NOT PRESENT 
LYBE_APP: PRESENT/NOT PRESENT 
LYBA_CTR PRESENT/NOT PRESENT 
LYPG_TWR PRESENT/NOT RESENT 
etc. 

因此,如果它在文本文件中找到它回聲存在,如果沒有它回聲不存在。 正確的結果將是:

LYBE_TWR : PRESENT 
LYBE_APP: PRESENT 
LYBA_CTR NOT PRESENT 
LYPG_TWR PRESENT 

如果我例如if ($string == "LYBE_TWR") { echo 'present'; } else { echo 'not present'}做會響應爲LYBE_TWR正確的值,但由於它們實際上不是一個我IF-ED它會說,不存在爲後來的。

我希望你能理解,因爲我自己也不清楚了(ROFL)

編輯:這裏是考慮當前code..bare它仍然是WIP所以沒有結束,會有一些錯誤http://pastebin.com/z1r4A78E 謝謝。

+0

告訴我們您的當前腳本 – 2012-08-14 16:24:33

+0

添加當前的代碼... – sm007 2012-08-14 16:39:40

回答

0

這是假設你感興趣的代碼,如果字符串出現在你的文件中,而不是在行中。我將字符串分成前綴和後綴,而我忽略了任何數值。我沒有複製所有的代碼,爲便於閱讀的緣故

$prefixes = array("LYBA", "LYBE", "LYPG", "LYNI", "LYTV"); 
$suffixes = array("TWR", "APP", "CTR"); 

foreach($prefixes as $prefix) 
{ 
    foreach($suffixes as $suffix) 
    { 
     $results[$prefix."_".$suffix] = 0; 
    } 
} 

if(preg_match('/^('.implode("|",$prefixes).'|)_[A-Z0-9]*_*('.implode("|",$suffixes).')/', $line, $matches)) 
{ 
    (... your code ...) 
    $match_string = $matches[1]."_".$matches[2]; 
    $results[$match_string]++; 

} 

foreach($results as $key => $value) 
{ 
    echo $key; 
    if($value > 0) 
    { 
     echo " PRESENT"; 
    } 
    else 
    { 
     echo " NOT PRESENT"; 
    } 
    echo "<br/>"; 
} 
+0

嘿。謝謝回覆。雖然,我仍然面臨着問題。首先,你編碼的方式是所有的組合都是可能的。事實上,正如我在最初的「職位」中所說的,只有七個可能。可能的是:LYBE_TWR,LYBE_APP,LYBA_CTR,LYPG_TWR,LYPG_APP,LYTV_TWR,LYNI_APP ...現在,我得到了當前代碼的以下輸出; http://pastebin.com/jdXKPn9u,並繼續這樣做了很長時間。我希望你明白我想說的是什麼。感謝您的幫助 – sm007 2012-08-15 12:00:51

+0

您的preg_match在這種情況下不正確。 – 2012-08-15 12:03:07