php - 两个if条件和爆炸
问题描述
我有这个工作功能:
function pingAddress($ip) {
$lines = file('F:\share\result.txt');
foreach($lines as $line){
$parts = explode(' ', $line);
if($parts[0] == $ip){
return $parts[1];
}
}
}
echo pingAddress('192.168.50.105'); // UP
它从如下所示的文件中返回 UP 或 DOWN:
192.168.50.104 UP
192.168.50.105 UP
192.168.50.106 DOWN
192.168.50.107 UP
我无法添加背景颜色以使用 UP 或 DOWN 显示。就像是:
function pingAddress($ip) {
$lines = file('F:\share\result.txt');
foreach($lines as $line){
$parts = explode(' ', $line);
if($parts[0] == $ip && $parts[1] == 'UP'){
echo "<p style='background-color:lime'>";
return $parts[1];
}else{
echo "<p style='background-color:red'>";
return $parts[1];
}
}
}
谢谢!
解决方案
这是因为file()
默认情况下将新行保留在字符串的末尾,因此当您尝试将其与 - 进行比较时UP
- 它不会UP
与新行匹配。
要么使用
$lines = file('F:\share\result.txt', FILE_IGNORE_NEW_LINES);
删除新行或修剪输出
if($parts[0] == $ip && trim($parts[1]) == 'UP'){
这也取决于您是否要在文件中为同一个 IP 地址拥有多个条目,有些可能是向上的,有些可能是向下的。如果可能发生,您将需要解决此问题。
您还需要将颜色格式添加到输出数据的位置,这仅当前返回数据。
推荐阅读
- c++ - 程序没有正确读取字符串
- python - 无法将值转换为 int python
- asp.net - ASP.net Webform 中的 Page_OnLoad 事件中的会话 ID 为空
- google-cloud-run - Cloud Run - 使用通配符子域的自定义域映射
- google-cloud-platform - 调整 GKE 以加快分配和分配 IP 给新服务的速度
- php - MapBox addLayer/addSource 不添加从 php 创建的 geoJson 的点
- sql-server - 在 SQL 中粉碎 XML 但交叉应用会添加不需要的记录
- c# - 发送电子邮件始终返回 5.7.3 身份验证不成功代码或身份验证失败的某些变体
- twilio - 通过 SMS 自动化发送唯一代码
- android - android studio 应用程序文件夹丢失。如何再次显示?