gpt4 book ai didi

PHP ob_get_clean 在 ?> 之后删除换行符

转载 作者:可可西里 更新时间:2023-11-01 00:51:15 24 4
gpt4 key购买 nike

我正在尝试创建一个函数来获取脚本文件并在 telnet 设备上执行输出。我让它工作,但 ob_get_clean 似乎在 php 右大括号 (?>) 之后删除了所有换行符。有没有人遇到过这个问题?

public final function execScript($name, $args)
{
ob_start();
include("../apps/frontend/modules/device/scripts/" . $name . ".php");
$partial = ob_get_clean();
$commands = explode("\n", $partial);

foreach($commands as $command)
{
$output .= $this->telnet->exec($command);
}

return $output;
}

“脚本”

conf
int ethernet 1/<?php echo $args['port']; ?>
switchport allowed vlan add <?php echo $args['vlan_id']; ?> tagged
switchport native vlan <?php echo $args['vlan_id']; ?>
switchport allowed vlan remove 1
end

预期输出

conf
int ethernet 1/18
switchport allowed vlan add 100 tagged
switchport native vlan 100
switchport allowed vlan remove 1
end

实际输出

conf
int ethernet 1/18switchport allowed vlan add 100 tagged
switchport native vlan 100switchport allowed vlan remove 1
end

最佳答案

在结束 ?> 标签后总是会忽略一个换行符——使用输出缓冲不会改变任何东西。


作为引用,请参阅 Instruction separation :

The closing tag for the block will include the immediately trailing newline if one is present.

Escaping from HTML :

when PHP hits the ?> closing tags, it simply starts outputting whatever it finds (except for an immediately following newline - see instruction separation )


根据 PHP 手册中的这两句话(以及我自己的经验),在 ?> 之后丢失一个换行符,就像您所做的那样,是有记录的和预期的行为1

1.就算惊讶也是第一次遇到^​​^

关于PHP ob_get_clean 在 ?> 之后删除换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6754587/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com