Php 是否对照其他值检查预匹配结果?

Php 是否对照其他值检查预匹配结果?,php,preg-match,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。

我需要一些关于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_匹配完成了它的功能,我可以回显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';}否则{echo'not present'}
它将为
LYBE_TWR
回显正确的值,但对于后者,它会说not present,因为它们实际上不是我所需要的值

我希望你能理解,因为我自己也不确定了(罗夫)

编辑:这是当前代码。请记住,它仍然是WIP,所以没有完成,并且会有一些错误
谢谢。

这段代码假定您对文件中出现的字符串感兴趣,而不是行中出现的字符串感兴趣。我将字符串拆分为前缀和后缀,忽略任何数值。为了可读性,我没有复制你所有的代码

$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/>";
}
$prefixes=数组(“LYBA”、“LYBE”、“LYPG”、“LYNI”、“LYTV”);
$suffix=数组(“TWR”、“APP”、“CTR”);
foreach($前缀作为$前缀)
{
foreach($后缀为$后缀)
{
$results[$prefix.\..$suffix]=0;
}
}
if(preg_match('/^('.introde(“|)”,$前缀)。'|).[A-Z0-9]*.*('.introde(“|”,$后缀)。')/',$line,$matches))
{
(…您的代码…)
$match_string=$matches[1]。“_”。$matches[2];
$results[$match_string]++;
}
foreach($结果为$key=>$value)
{
echo$key;
如果($value>0)
{
呼应“现在”;
}
其他的
{
呼应“不在场”;
}
回声“
”; }
嘿。谢谢你的回复。尽管如此,我仍然面临一些问题。首先,您编码的方式是所有组合都是可能的。事实上,正如我在最初的“帖子”中所说,只有七个是可能的。可能的有:LYBE_TWR,LYBE_APP,LYBA_CTR,LYPG_TWR,LYPG_APP,LYTV_TWR,LYNI_APP…现在我得到当前代码的以下输出:;这种情况持续了很长时间。我希望你能理解我想说的话。谢谢你的帮助