PHP处理文件内容

tata8188 2014-10-22 05:43:06
我要的效果很简单,就是打开一个文件(格式自定),把这个文件的第N行的一张图片链接(以http://p7.game.com/pic.png为例)替换成相对路径(../images/pic.png),不可以把内容写入到新的文件里面,
...全文
156 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
傲雪星枫 2014-10-23
  • 打赏
  • 举报
回复
這樣可以替換多個了。

$p = array(
	array('line'=>7,'search'=>'http://p7.game.com/pic.png','replace'=>'../images/pic.png'),
	array('line'=>8,'search'=>'8','replace'=>'abc'),
);
 
$content = file_get_contents('test.txt');
$data = explode(chr(10), $content);

foreach($p as $v){
	$key = $v['line']-1;
	if(isset($data[$key])){
		$data[$key] = str_replace($v['search'], $v['replace'], $data[$key]);
	}
}

file_put_contents('test.txt', implode(chr(10), $data));
xuzuning 2014-10-23
  • 打赏
  • 举报
回复
这个文件的第N
tata8188 2014-10-22
  • 打赏
  • 举报
回复
引用 2 楼 xuzuning 的回复:
$fn = 'filename';
$fp = fopen($fn, 'r+');
$size = filesize($fn);
$offs = 0;
$n = 0;
while($buf = fgets($fp)) {
  $n++;
  if($n == N) break;
  $offs = ftell($fp);
}
$thru = fread(fp, $size);
$buf = '..' . substr($buf, 6);
fseek($fp, $offs);
fwrite($fp, "$buf\n$tfrh");
ftruncate($fp);
fclose($fp);

大神,这句是什么意思,N表示什么?“$n == N”
tata8188 2014-10-22
  • 打赏
  • 举报
回复
引用 3 楼 fdipzone 的回复:
test.txt

11111111
2222222
33333333
44444444
55555555
66666666
77777http://p7.game.com/pic.png777
888888888
99999999999

$line = 7;
$search = 'http://p7.game.com/pic.png';
$replace = '../images/pic.png';

$content = file_get_contents('test.txt');
$data = explode(chr(10), $content);

if(isset($data[$line-1])){
    $data[$line-1] = str_replace($search, $replace, $data[$line-1]);
    file_put_contents('test.txt', implode(chr(10), $data));
}
写得很好,但是可扩展性不强,假如对多个对象进行替换处理,效果就不好了,不过,谢谢你
傲雪星枫 2014-10-22
  • 打赏
  • 举报
回复
test.txt

11111111
2222222
33333333
44444444
55555555
66666666
77777http://p7.game.com/pic.png777
888888888
99999999999

$line = 7;
$search = 'http://p7.game.com/pic.png';
$replace = '../images/pic.png';

$content = file_get_contents('test.txt');
$data = explode(chr(10), $content);

if(isset($data[$line-1])){
    $data[$line-1] = str_replace($search, $replace, $data[$line-1]);
    file_put_contents('test.txt', implode(chr(10), $data));
}
xuzuning 2014-10-22
  • 打赏
  • 举报
回复
$fn = 'filename';
$fp = fopen($fn, 'r+');
$size = filesize($fn);
$offs = 0;
$n = 0;
while($buf = fgets($fp)) {
  $n++;
  if($n == N) break;
  $offs = ftell($fp);
}
$thru = fread(fp, $size);
$buf = '..' . substr($buf, 6);
fseek($fp, $offs);
fwrite($fp, "$buf\n$tfrh");
ftruncate($fp);
fclose($fp);

tata8188 2014-10-22
  • 打赏
  • 举报
回复
高手啊,大神们在哪里啊?

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧