根据其他值检查preg_match结果


check preg_match results against other values?

我需要一些关于我的PHP脚本的帮助。所以,这是交易。

我有一个preg_match,它检查每 30 分钟左右更改一次的 .txt 文件中的以下文本: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)

编辑:这是当前代码。请记住,它仍然是WIP,因此尚未完成,并且会有一些错误 http://pastebin.com/z1r4A78E谢谢。

这是基于以下假设的代码:如果字符串出现在您的文件中,而不是在该行中,您会感兴趣。我将字符串拆分为前缀和后缀,并且忽略了任何数值。为了可读性,我没有复制你所有的代码

$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/>";
}