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 under
H107 - String Handling in PHP [4072] Splitting the difference with PHP - (2013-04-27)
[4071] Setting up strings in PHP - (2013-04-27)
[3790] Solution looking for a problem? Lookahead and Lookbehind - (2012-06-30)
[3789] More than just matching with a regular expression in PHP - (2012-06-30)
[3788] Getting more than a yes / no answer from a regular expression pattern match - (2012-06-30)
[3534] Learning to program in PHP - Regular Expression and Associative Array examples - (2011-12-01)
[3516] Regular Expression modifiers in PHP - summary table - (2011-11-12)
[3515] PHP - moving from ereg to preg for regular expressions - (2011-11-11)
[3424] Divide 10000 by 17. Do you get 588.235294117647, 588.24 or 588? - Ruby and PHP - (2011-09-08)
[2629] Curly braces within double quoted strings in PHP - (2010-02-09)
[2238] Handling nasty characters - Perl, PHP, Python, Tcl, Lua - (2009-06-14)
[2165] Making Regular Expressions easy to read and maintain - (2009-05-10)
[2046] Finding variations on a surname - (2009-02-17)
[1799] Regular Expressions in PHP - (2008-09-16)
[1613] Regular expression for 6 digits OR 25 digits - (2008-04-16)
[1603] Do not SHOUT and do not whisper - (2008-04-06)
[1533] Short and sweet and sticky - PHP form input - (2008-02-06)
[1372] A taster PHP expression ... - (2007-09-30)
[1336] Ignore case in Regular Expression - (2007-09-08)
[1195] Regular Express Primer - (2007-05-20)
[1058] PHP Regular expression to extrtact link and text - (2007-01-31)
[1008] Date conversion - PHP - (2006-12-26)
[728] Looking ahead and behind in a Regular Expression - (2006-05-22)
[716] Evaluating arithmetic expressions in configuration files - (2006-05-10)
[642] How similar are two words - (2006-03-11)
[608] Don't expose your regular expressions - (2006-02-15)
[589] Robust PHP user inputs - (2006-02-03)
[574] PHP - dividing a string up into pieces - (2006-01-23)
[560] The fencepost problem - (2006-01-10)
[558] Converting between acres and hectares - (2006-01-08)
[493] Running a Perl script within a PHP page - (2005-11-12)
[463] Splitting the difference - (2005-10-13)
[422] PHP Magic Quotes - (2005-08-22)
[337] the array returned by preg_match_all - (2005-06-06)
[54] PHP and natural sorting - (2004-09-19)
[31] Here documents - (2004-08-28)
5482
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