如何在PHP中消除fges函数中的换行符?

2022-08-30 21:28:31

我正在尝试创建一个使用PHP 'fgets'函数从平面文件数据库调用图像名称的图库。库中有不同的部分,每个部分都有自己的默认图像,以及用户可以从中选择的一小部分图像。一切都很好,除了一个按钮。

我在页面上有一个按钮,应该使用Javascript OnClick将所有画廊重置为其默认图像。它完全按照我想要的方式工作,有一个小问题:它复制了行尾的换行符,并在行上加上字符,破坏了Javascript。

违规代码:

function back(){
document.getElementById('back').className='back';
document.getElementById('one').className='cellcont';

//This should output the proper javascript, but does not
<?php
$a = fopen('c.txt','r');
if (!$a) {echo 'ERROR: Unable to open file.'; exit;}
$b = fgets($a);
echo "document.getElementById('i1').src='$b';";
fclose($a);
?>

}

它如何输出:

function back(){
document.getElementById('back').className='back';
document.getElementById('one').className='cellcont';
document.getElementById('i1').src='00.jpg
';}

如您所见,结束引号和分号落在下一行,这会破坏按钮。

对于我现在使用的文件,我可以通过将“fgets($a)”更改为“fgets($a,7)”来解决此问题,但我需要让它抓住整行,以便如果客户端决定输入具有较长名称的文件,它不会破坏它们的库。


答案 1

用。rtrim()

具体说来:

rtrim($var, "\r\n");

(为避免修剪其他字符,请仅换行符。


答案 2

你最好的办法是使用php trim()函数。查看 http://php.net/manual/en/function.trim.php

$b = trim(fgets($a));