如何删除行尾的,但在文件中保留换行符?在FastCGI请求中



目前我的代码在这个问题中(我不知道是否有必要添加代码,尽管它与我在那个问题中的代码相同,但如果你认为我应该在这里添加代码,请告诉我,我会添加的(

用上面的代码运行我的程序,我得到了这个输出:

确定("X-Powered-Bby:PHP/8.1.1"\r\n内容类型:text/html;charset=UTF-8 \r\n\r\n第一个文件"(

但我的PHP文件的内容是:

<?php
echo "First file";
?>

很明显,在我展示的程序的输出中,我的PHP程序的输出就在那里,但它像一样返回给我

rnrnFirst file

因此,我首先想到的是尝试使用正则表达式来处理我的PHP程序的输出,例如,在";\\r\n\r\n";它将返回我认为的";输出";我的文件,并工作。但是有一个错误,如果我有更长的PHP文件,例如:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>

</body>
</html>
<?php
echo "PHP file";
header("Location: form.php");
?>

在执行FastCGI请求时,我得到的输出是:

Ok("Status: 302 FoundrnX-Powered-By: PHP/8.1.11rnLocation: form.phprnContent-type: text/html; charset=UTF-8rnrn<!DOCTYPE html>n<html lang="en">n<head>n    <meta charset="UTF-8">n    <meta http-equiv="X-UA-Compatible" content="IE=edge">n    <meta name="viewport" content="width=device-width, initial-scale=1.0">n    <title>Document</title>n</head>n<body>n    n</body>n</html>nPHP file")

正如您所看到的,在每一个换行符之后,我都会得到一个\n,但例如,如果我想在web浏览器中显示它,那不是一个好主意,或者至少浏览器不会给出我期望的输出,因为有很多\n,而且由于明显的原因,我无法使用正则表达式来处理它们。所以我的问题是,如何删除html代码中的换行符?因为没有换行符的html文件是不可维护的。

您还没有发布Rust代码,但似乎对调试输出感到困惑。文字字符序列n(或r(不在响应字符串中,它们是文字换行符和回车符(ASCII代码10和13(。当使用Debug打印时,Rust试图通过将它们显示为n来让您更容易地发现它们,就像它们显示在字符串文字中一样。

考虑这个例子:

fn main() {
let text = "HellonWorld";
println!("With Debug:");
println!("{:?}", text);
println!("With Display:");
println!("{}", text);
}

(操场(

输出为:

With Debug:
"HellonWorld"
With Display:
Hello
World

另一方面,rnrn将HTTP标头与响应主体分离(或者更准确地说,每个标头后面都跟有rn,标头的末尾用另一个rn标记(。如果您想解析HTTP响应的单独部分(状态代码、标头、正文(,我建议使用适当的HTTP解析器,而不是正则表达式。或者,只需将响应逐字逐句地返回给用户——这看起来像是一个格式良好的HTTP响应。

最新更新