28

please check the following code.

$imagebaseurl = 'support/content_editor/uploads/$name';

The $imagebaseurl is a variable that is containing a link to my image folder (uploads) and inside the folder I have some other folders which are named after my users name. for example: I have a user who's name is john, so the the link should look like this-> support/content_editor/uploads/john.

The main idea is when any user is logged in and browses his image gallery I want to take him to his own gallery which basically is named after his name.

When he will visit the gallery the value of $name in the link will come from the user's login name (from session). Now the problem is as you probably have already understood that the placement of $name in the above link is wrong and that is why it is not working. I am getting this whole URL> (support/content_editor/uploads/$name) instead of (support/content_editor/uploads/john)

Now could you please tell me how to use the $name in this $imagebaseurl = 'support/content_editor/uploads/$name';

hakre
  • 193,403
  • 52
  • 435
  • 836
black_belt
  • 6,601
  • 36
  • 121
  • 185

2 Answers2

67
$imagebaseurl = 'support/content_editor/uploads/' . $name;

or

$imagebaseurl = "support/content_editor/uploads/{$name}";

Note that if you use double quotes, you can also write the above as:

$imagebaseurl = "support/content_editor/uploads/$name";

It's good though to get in the habit of using {$...} in double quotes instead of only $..., for times where you need to insert the variable in a string where it's not obvious to PHP which part is the variable and which part is the string.

If you want the best performance, use string concatenation with single quotes.

rid
  • 61,078
  • 31
  • 152
  • 193
  • 3
    Just a sidenote: it's recommended not to use double quotes with variables inside them. It's horrible for code readability and debugging and PHP is also slightly faster if single quotes are used (like the first example of Radu's answer). – kingmaple May 09 '12 at 08:39
  • 2
    Note that you can use single quotes inside double quotes and still parse the variable ` – loveNoHate Dec 17 '14 at 05:51
  • 1
    Personally I usually find the string interpolation approach to be much more readable than lots of expressions concatenated together with the dot operator. But, how bad is the performance hit of using this? Anyone benchmark it? :) – sidewinderguy Apr 02 '19 at 18:36
-7

I couldn't disagree more with the previous post.

I'd almost go as far to call it bad practice to use

$varname = 'EXAMPLE';

$fulltext = "This is an $varname";

Its more maintainable, from my experience, to utilize a good friend of mine known as sprintf();

define('CONST_NAME', 'This is an example of a better %s');
define('EXAMPLE', sprintf(CONST_NAME, 'practice'));

echo EXAMPLE;

Why? The first one may seem more clear, but the second one is much more re-usable. I recommend utilizing sprintf over the php magic double quote nonesense which exists, literally, in NO other language.

http://php.net/manual/en/function.sprintf.php

This is also the practice used very similar to C#, and many other languages.

See also: https://msdn.microsoft.com/en-us/library/system.string.format(v=vs.110).aspx

HumbleWebDev
  • 555
  • 4
  • 20
  • 1
    @b_dubb I’m hardly skilled at php specifically, but php supports several things other languages don’t, and Humble here provides no reason that magic quotes are inferior to what is a very similar thing with sprintf, as well as ignored how much more cumbersome it is to write and maintain sprintf strings—especially those with multi-part. I don’t know who downvoted though. – Regular Jo Dec 17 '18 at 10:51
  • 2
    Python 3.6 introduces Formatted string literals (https://docs.python.org/3/reference/lexical_analysis.html#f-strings). – user832146 Dec 25 '18 at 21:45
  • 8
    I added another downvote and here's why: First of all, this language feature is called 'string interpolation', and not only is it false to say it exists in "NO other language", but you can look here and see over a dozen examples of it: https://en.wikipedia.org/wiki/String_interpolation. It's an extremely helpful feature, especially for the kinds of tasks a language like PHP is designed for. Another reason for the downvote is: what about this code is 're-usable'? What does reusability even have to do with this issue? Further, the answer is overly opinionated and frankly hostile in tone. – sidewinderguy Apr 02 '19 at 18:30