PHP trim的问题
在过去的4个小时里,我都撞到了头,我不明白为什么我的第二次修剪会产生重复。 这段代码没有修剪,运行良好,并产生我想要的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
<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
块。值得一提的是,它会使您的答案更好,并避免像…这样的后续注释…现在我缺少条目,而不是重复项…
当整行被修剪掉时:-)排序。。谢谢各位!