PHP trim的问题

PHP trim的问题,php,asterisk,trim,Php,Asterisk,Trim,在过去的4个小时里,我都撞到了头,我不明白为什么我的第二次修剪会产生重复。 这段代码没有修剪,运行良好,并产生我想要的 <h1>Offline Phones</h1> <?php // Query For All Peers exec("/usr/sbin/asterisk -r -x 'sip show peers'", $response); foreach($response as $line) { $offline = $line; i

在过去的4个小时里,我都撞到了头,我不明白为什么我的第二次修剪会产生重复。 这段代码没有修剪,运行良好,并产生我想要的

<h1>Offline Phones</h1>
<?php

// Query For All Peers
exec("/usr/sbin/asterisk -r -x 'sip show peers'", $response);

foreach($response as $line) {


  $offline = $line;

    if (strpos($offline, "UNKNOWN")>0) {
    print "<span style='color:red;'>$offline</span><br>";  
    }
}
?>

<h1>Online Phones</h1>
<?php

// Query For All Peers
exec("/usr/sbin/asterisk -r -x 'sip show peers'", $responses);

foreach($responses as $lines) {
$online = $lines;


    if (strpos($online, "OK")>0) {

    print "<span style='color:green;'>$online</span><br>";   
    }
}
?>
离线电话

您错过了
{}
括号。在
if
之后运行的所有代码都应该包含在那里。所以

if (strpos($offline, "UNKNOWN")>0)
$clean_offline = trim($offline, '(Unspecified) D N A 0 UNKNOWN');
{
echo "<span style='color:red;'>$clean_offline</span><br>";  
}
if(strpos($offline,“UNKNOWN”)>0)
$clean_offline=trim($offline,”(未指定)D N A 0未知“;
{
echo“$clean_离线
”; }
应该是

if (strpos($offline, "UNKNOWN")>0)
{
  $clean_offline = trim($offline, '(Unspecified) D N A 0 UNKNOWN');
  {
    echo "<span style='color:red;'>$clean_offline</span><br>";  
  }
}
if (strpos($online, "OK")>0) 
{
   $clean_online = trim($online);
   {
      echo "<span style='color:green;'>$clean_online</span><br>";   
   }
}
if(strpos($offline,“UNKNOWN”)>0)
{
$clean_offline=trim($offline,”(未指定)D N A 0未知“;
{
echo“$clean_离线
”; } }
下一个代码块也是如此

if (strpos($online, "OK")>0) 

$clean_online = trim($online);
{
echo "<span style='color:green;'>$clean_online</span><br>";   
}
if(strpos($online,“OK”)>0)
$clean_online=修剪($online);
{
echo“$clean_online
”; }
应该是

if (strpos($offline, "UNKNOWN")>0)
{
  $clean_offline = trim($offline, '(Unspecified) D N A 0 UNKNOWN');
  {
    echo "<span style='color:red;'>$clean_offline</span><br>";  
  }
}
if (strpos($online, "OK")>0) 
{
   $clean_online = trim($online);
   {
      echo "<span style='color:green;'>$clean_online</span><br>";   
   }
}
if(strpos($online,“OK”)>0)
{
$clean_online=修剪($online);
{
echo“$clean_online
”; } }

这不是
trim()
的问题,而是将
$online
分配给
$clean_online
strpos
条件只计算一次,并在所有后续迭代中使用。

这看起来不正确:

foreach($response as $line) {

  $offline = $line;

    if (strpos($offline, "UNKNOWN")>0)
    $clean_offline = trim($offline, '(Unspecified) D N A 0 UNKNOWN');
    {
    echo "<span style='color:red;'>$clean_offline</span><br>";  
    }
}
foreach($响应为$行){
$offline=$line;
如果(strpos($offline,“UNKNOWN”)>0)
$clean_offline=trim($offline,”(未指定)D N A 0未知“;
{
echo“$clean_离线
”; } }
应该是这样的:

foreach($response as $line)
{
    // strpos returns a position if exists, ZERO is valid
    // you get boolean false if it does not exist
    if(strpos($line, "UNKNOWN"))
    {
        echo "<span style='color:red;'>".trim($line, '(Unspecified) D N A 0 UNKNOWN')"</span><br>";     
    }
    elseif(strpos($online, "OK"))
    {
        echo "<span style='color:green;'>".trim($line)."</span><br>";
    }
}
foreach($响应为$行)
{
//strpos返回一个位置如果存在,零是有效的
//如果布尔值不存在,则为false
如果(STRPO($line,“未知”))
{
echo“.trim($line,”(未指定)D N A 0未知“”
”; } elseif(strpos($online,“OK”)) { 回声“.修剪($line)。”
“; } }
也许准确阅读trim()在中的作用有助于理解,特别注意第二个参数。。。它被称为$charlist是有原因的。同样,当在循环中执行操作时,当它们发生不止一次时,不要感到惊讶。对不起,伙计们,我不是工程师。。这就是我来这里寻求帮助的原因。当你说一个循环;什么意思?标记您发送的文档是我最初用来帮助修剪的。不要为此使用修剪,请使用str_replace并将该字符串替换为空字符串。然后,使用trim去掉控制字符+1个好的捕获,但是您缺少
trim
不像第一个块那样工作;它不截断字符串,而是截断单个字符。现在,这可能会意外地导致与OP预期的结果相同的结果,但它不会自动产生,它很可能会比预期的切断更多的路。@jeroen不确定我在哪里谈到了这一点。他的问题基于一个错误的前提。创建重复项的不是
trim
,而是一个格式错误的
if
块。值得一提的是,它会使您的答案更好,并避免像
…这样的后续注释…现在我缺少条目,而不是重复项…
当整行被修剪掉时:-)排序。。谢谢各位!