Question - Is a tab 8 spaces or 4?
Answer - Not quiet either, really. It's a movement of the cursor forward by
up to 8 spaces (or 4 spaces or some other number if you have altered your tab stops).
We have many sample programs and data files on our web site (there's a full list, together with all related longer and shorter articles
[here]), and they contain something of a mixture of tabs and spaces ... and that (together with the browser's behaviour of compressing multiple white space) leads to some very badly formatted displays unless specific correctional action is taken.
• We display sample source code in a fixed width font, and with <pre> tag, or by specifying
pre in the
white-space property in CSS (and selecting a fixed width font there too).
• We replace tabs with the appropriate number of spaces in our display scripts - here's the course code to handle a line of text in PHP:
while (($posn = strpos($line,"\t")) !== false) {
$spaces = 8 - ($posn % 8) ;
$line = substr_replace($line,str_repeat(" ",$spaces),$posn,1);
}
With many file formats, spaces can be interchanged with tabs with little problem, but there are exceptions - the
makefile uses the tab character as a delimiter and spaces won't do ... I recall
printcap files used to have problems if you used the wrong character, and Python programs that inlcude a mix of tabs and spaces can be very confusing if you rad them with an editor set to none-8 tab spacing. And of course they are vitally important in tab separated value files (.tsv's) of the sort that you'll often use when you export data from a program like Microsoft Excel.
(written 2010-10-29)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
H107 - String Handling in PHP [31] Here documents - (2004-08-28)
[54] PHP and natural sorting - (2004-09-19)
[337] the array returned by preg_match_all - (2005-06-06)
[422] PHP Magic Quotes - (2005-08-22)
[463] Splitting the difference - (2005-10-13)
[493] Running a Perl script within a PHP page - (2005-11-12)
[558] Converting between acres and hectares - (2006-01-08)
[560] The fencepost problem - (2006-01-10)
[574] PHP - dividing a string up into pieces - (2006-01-23)
[589] Robust PHP user inputs - (2006-02-03)
[608] Don't expose your regular expressions - (2006-02-15)
[642] How similar are two words - (2006-03-11)
[716] Evaluating arithmetic expressions in configuration files - (2006-05-10)
[728] Looking ahead and behind in a Regular Expression - (2006-05-22)
[1008] Date conversion - PHP - (2006-12-26)
[1058] PHP Regular expression to extrtact link and text - (2007-01-31)
[1195] Regular Express Primer - (2007-05-20)
[1336] Ignore case in Regular Expression - (2007-09-08)
[1372] A taster PHP expression ... - (2007-09-30)
[1533] Short and sweet and sticky - PHP form input - (2008-02-06)
[1603] Do not SHOUT and do not whisper - (2008-04-06)
[1613] Regular expression for 6 digits OR 25 digits - (2008-04-16)
[1799] Regular Expressions in PHP - (2008-09-16)
[2046] Finding variations on a surname - (2009-02-17)
[2165] Making Regular Expressions easy to read and maintain - (2009-05-10)
[2238] Handling nasty characters - Perl, PHP, Python, Tcl, Lua - (2009-06-14)
[2629] Curly braces within double quoted strings in PHP - (2010-02-09)
[3424] Divide 10000 by 17. Do you get 588.235294117647, 588.24 or 588? - Ruby and PHP - (2011-09-08)
[3515] PHP - moving from ereg to preg for regular expressions - (2011-11-11)
[3516] Regular Expression modifiers in PHP - summary table - (2011-11-12)
[3534] Learning to program in PHP - Regular Expression and Associative Array examples - (2011-12-01)
[3788] Getting more than a yes / no answer from a regular expression pattern match - (2012-06-30)
[3789] More than just matching with a regular expression in PHP - (2012-06-30)
[3790] Solution looking for a problem? Lookahead and Lookbehind - (2012-06-30)
[4071] Setting up strings in PHP - (2013-04-27)
[4072] Splitting the difference with PHP - (2013-04-27)
Some other Articles
Testing the new pavement ready for ChristmasAutumn walk from BowerhillRetaining web site visitors - reducing the one page wondersCourses for late 2010 and early 2011Handling (expanding) tabs in PHPApache httpd Server Status - monitoring your serverTuning Apache httpd and Tomcat to work well togetherSeventh day traveller on the six day railwayThe legal considerations of your web presence - revisitedLogging the performance of the Apache httpd web server