我正在使用 PHP 返回用户的浏览器用户代理问题是我想在哪里打印它:我不希望长度超过每行大约 30 个字符。有没有办法将返回的变量(从我调用以获取字符串的函数)分解为一定长度的子字符串?而且由于 UA 字符串的长度不同,我不确定会发生什么。
这是我返回用户代理的 PHP 代码:
function __toString() {
return "Browser Name:
return "Browser Name: {$this->getBrowser()} \n" .
" Browser Version: {$this->getVersion()} \n" .
" Browser User Agent String: {$this->getUserAgent()} \n" .
" Platform: {$this->getPlatform()} ";
}
特别是这个电话$this->getUserAgent
。我使用这个输出:
<?php require_once('browser.php'); $browser = new Browser(); echo $browser . "\n"; ?>
现在,名称、版本和平台调用输出就像我想要的那样(因为在 UA 字符串中没有任何地方接近)。
简而言之,如何拆分返回的用户字符串,使其每行不超过一定数量的字符?理想情况下,我想将它们存储到临时变量中,因为我必须在单词之间添加空格。例如,在它说“平台”的地方,它前面有空格,所以它与浏览器版本垂直对齐,然后是空格,以便函数返回的所有字符串的结果对齐。
如果有人想要上面的 Github 代码看看我在做什么,函数调用在第339-243行,回显结果在第 152 行。
在这一点上我非常非常接近
只需要帮助在包装文本之前添加空格(请参阅下面的答案)
这就是我现在所拥有的:
$text1 = $this->getUserAgent();
$UAline1 = substr($text1, 0, 26);
$text2 = $this->getUserAgent();
$towrapUA = str_replace($UAline1, '', $text2);
$wordwrapped = chunk_split($towrapUA, 26, "\n\r");
此时唯一的问题是如何在每个包装代码之前获得恒定数量的空格?我需要(比如说)在所有换行之前留出 20 个空格来进行格式化。