我需要一些关于我的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/>";
}