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

时间:2011-09-19 22:56:02

标签: php javascript html fgets

我正在尝试创建一个使用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)”来解决这个问题,但我需要让它抓住整行如果客户决定输入名称较长的文件,则不会破坏其上的图库。

3 个答案:

答案 0 :(得分:23)

使用rtrim()

具体做法是:

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

(为了对其他角色进行修剪,请直接传入。)

答案 1 :(得分:20)

你最好的选择是使用php trim()函数。见http://php.net/manual/en/function.trim.php

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

答案 2 :(得分:1)

$b = fgets($a);
$b = preg_replace("/[\n|\r]/",'',$b);