--- On Wed, 11/12/08, brucewhealton <[EMAIL PROTECTED]> wrote:

> Ok, I'm a bit confused on the single and double quotes.  If single
> quotes does not replace the variable, then how would this work:
>
> echo('<img src="images/topbanner' . $number. '.jpg" />');
>
> The first choice from below?   Would that work with the single quotes?  
> I see that this would work:
>
> print "<img src='images/topbanner$number.jpg' />";
> 
> I thought I was going to have to worry about escaping the < > and "
> characters but none of these solutions require that.  Why?
> Thanks,
> Bruce

$x = 123;
print "The value of x is $x"; // The value of x is 123
print 'The value of x is $x'; // The value of x is $x

I don't know of any HTML browsers which care if you do your element properties 
with single or double quotes.  For XHTML your mileage may vary.

<img src='pic.jpg'>
<img src="pic.jpg">

Combining this, if you want to output HTML with variables, it's best to contain 
the entire thing in double quotes so that the variables (if simple ones) are 
replaced by their value:

print "<img src='pic$x.jpg'>"; // <img src='pic123.jpg'>

This will not work as expected:

print '<img src="pic$x.jpg">'; // <img src="pic$x.jpg">

When you are breaking things out into individual constant strings and variables 
which are concatenated together with the dot operator (.) then it doesn't 
matter if the constant strings are enclosed with single or double quotes.

Single quotes are called "strong" quotes because they do not evaluate anything 
which looks like a variable.  Double quotes are "soft" quotes and they do.

Single and double quotes are also an issue for special characters you want to 
be evaluated like \n or \r or \t.

You can write things like this but it is ugly and easy to make mistakes:

print "<img src=\"pic$x.jpg\">"; // <img src="pic123.jpg">

The backslashes before the double quotes "escapes" them so that they do not 
have their normal meaning to the PHP interpreter:  end the string which started 
with a double quote.

The angle brackets (< >) are not special to PHP so they don't need to be 
escaped.

I mentioned simple variable names (like $x).  If you have an array like 
$a['abc'] and you try to put it in a double quoted string, you can get unwanted 
results:

$a['abc'] = 789;
print "Value of a is $a['abc']"; // PHP Parse error: syntax error, unexpected 
T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

If you have just $a:

print "Value of a is $a"; // Value of a is Array

But enclosing the variable in curly braces gives PHP a hint to know where the 
variable name begins and ends.

print "Value of a is ${a['abc']}"; // Value of a is 789

James

ps.  Always give a useful subject line that describes your problem.

Reply via email to