0

我的 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'}它将回显 the 的正确值,LYBE_TWR但它会说后者不存在,因为它们实际上不是我想要的。

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

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

4

1 回答 1

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/>";
}
于 2012-08-14T17:31:17.390 回答