检查preg_match结果与其他值?

时间:2012-08-14 16:23:39

标签: php preg-match

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

我有一个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的正确值,但它会说不适用于后者,因为它们实际上并不是我想要的那个。

我希望你理解,因为我自己不再确定(rofl)

编辑:这是当前的代码。请记住它仍然是WIP,所以没有完成,会有一些错误http://pastebin.com/z1r4A78E 感谢。

1 个答案:

答案 0 :(得分: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/>";
}