vidyashankara Posted May 17, 2006 Share Posted May 17, 2006 Hi, i want to add 4 letters to every line in a text file between the 73-76 column. for example,[code]ATOM 1 N ASP A 1 53.812 -11.138 126.976 1.00 27.73 N ATOM 2 CA ASP A 1 54.887 -12.148 127.179 1.00 27.09 C ATOM 3 C ASP A 1 55.387 -12.701 125.851 1.00 24.03 C ATOM 4 O ASP A 1 56.597 -12.865 125.652 1.00 22.99 O ATOM 5 CB ASP A 1 54.405 -13.282 128.081 1.00 29.92 C [/code]should become[code]ATOM 1 N ASP A 1 53.812 -11.138 126.976 1.00 27.73 PRO0 N ATOM 2 CA ASP A 1 54.887 -12.148 127.179 1.00 27.09 PRO0 C ATOM 3 C ASP A 1 55.387 -12.701 125.851 1.00 24.03 PRO0 C ATOM 4 O ASP A 1 56.597 -12.865 125.652 1.00 22.99 PRO0 O ATOM 5 CB ASP A 1 54.405 -13.282 128.081 1.00 29.92 PRO0 C [/code]If there is some other text in that column, it should overwrite it. how do i go about doing this? Can i do it in PHP. if not can i do it with some system command? Quote Link to comment https://forums.phpfreaks.com/topic/9886-insert-text-into-a-text-file/ Share on other sites More sharing options...
kenrbnsn Posted May 17, 2006 Share Posted May 17, 2006 There are a number ways of doing this in PHP.[list][*]Remember, strings can be treated as arrays, so you can do someting like:[code]<?php$input = file('in.txt'); // read file into an array$fp = f open('out.txt','w'); // open output file for write foreach($input as $line) { $line[72] = 'P'; // remember the first character of the string is at position 0 $line[73] = 'R'; $line[74] = 'O'; $line[75] = '0'; f write($fp,$line);}f close($fp);?>[/code][*]Use the substr() function[code]<?php$input = file('in.txt'); // read file into an array$fp = f open('out.txt','w'); // open output file for write foreach($input as $line) { $part1 = substr($line,0,72); $part2 = substr($line,76); f write($fp,$part1 . 'PRO0' . $part2);}f close($fp);?>[/code][*]You could probably use one of the regular expression replace functions, but they still baffle me. [img src=\"style_emoticons/[#EMO_DIR#]/smile.gif\" style=\"vertical-align:middle\" emoid=\":smile:\" border=\"0\" alt=\"smile.gif\" /][/list]Note: please remove the space between the "f" and the rest of filesystem functions.Note2: the code has not been tested.Ken Quote Link to comment https://forums.phpfreaks.com/topic/9886-insert-text-into-a-text-file/#findComment-36758 Share on other sites More sharing options...
vidyashankara Posted May 18, 2006 Author Share Posted May 18, 2006 [!--quoteo(post=374815:date=May 17 2006, 06:40 PM:name=kenrbnsn)--][div class=\'quotetop\']QUOTE(kenrbnsn @ May 17 2006, 06:40 PM) [snapback]374815[/snapback][/div][div class=\'quotemain\'][!--quotec--]There are a number ways of doing this in PHP.[list][*]Remember, strings can be treated as arrays, so you can do someting like:[code]<?php$input = file('in.txt'); // read file into an array$fp = f open('out.txt','w'); // open output file for write foreach($input as $line) { $line[72] = 'P'; // remember the first character of the string is at position 0 $line[73] = 'R'; $line[74] = 'O'; $line[75] = '0'; f write($fp,$line);}f close($fp);?>[/code][*]Use the substr() function[code]<?php$input = file('in.txt'); // read file into an array$fp = f open('out.txt','w'); // open output file for write foreach($input as $line) { $part1 = substr($line,0,72); $part2 = substr($line,76); f write($fp,$part1 . 'PRO0' . $part2);}f close($fp);?>[/code][*]You could probably use one of the regular expression replace functions, but they still baffle me. [img src=\"style_emoticons/[#EMO_DIR#]/smile.gif\" style=\"vertical-align:middle\" emoid=\":smile:\" border=\"0\" alt=\"smile.gif\" /][/list]Note: please remove the space between the "f" and the rest of filesystem functions.Note2: the code has not been tested.Ken[/quote]Thats a great idea! I will check it :) i never thought of it. Quote Link to comment https://forums.phpfreaks.com/topic/9886-insert-text-into-a-text-file/#findComment-36896 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.