Как использовать одинарные кавычки внутри одинарных кавычек?

Может ли кто-нибудь объяснить, как заставить этот код работать?

echo '<div id="panel1-under">Welcome <?php echo "$_SESSION['username']"; ?></div>';

Я пытался удалить одинарные кавычки (echo '<div id="panel1-under">Welcome <?php echo "$_SESSION[username]"; ?></div>';), но это не сработало.


person Joey Morani    schedule 01.08.2010    source источник


Ответы (7)


echo "<div id=\"panel1-under\">Welcome ".$_SESSION['username']."</div>";

or

echo '<div id="panel1-under">Welcome '.$_SESSION['username'].'</div>';

Быстрое объяснение:

  • Вам не нужно повторно открывать теги внутри эхо-строки ("...")
  • Здесь я передал строку "Welcome", объединенную с $_SESSION['username'] и "" (что такое . оператор делает)
  • PHP даже достаточно умен, чтобы обнаруживать переменные внутри строки PHP и оценивать их:

    $variablename = "Андрей";

    echo "Здравствуйте, $variablename, добро пожаловать";

=> Привет Андрей, добро пожаловать

Дополнительная информация: PHP.net — эхо

person Kami    schedule 01.08.2010
comment
PHP заменит переменные внутри строки PHP, ЕСЛИ строка находится в двойных кавычках или в формате Heredoc. Это важное различие. - person JAL; 02.08.2010
comment
+1 Это так в примере, но я не упомянул об этом явно! спасибо - person Kami; 02.08.2010
comment
echo "<div id=\"panel1-under\">Welcome {$_SESSION['username']}</div>"; Должно также работать? - person Svish; 02.08.2010

В одинарных кавычках имена переменных не анализируются так, как в двойных кавычках. Если вы хотите использовать здесь строки в одинарных кавычках, вам потребуется использовать оператор конкатенации строк, .:

echo '<div id="panel1-under">Welcome <?php echo "'.$_SESSION['username'].'"; ?></div>';

Между прочим: ответ на вопрос в заголовке заключается в том, что для того, чтобы использовать буквальную одинарную кавычку внутри строки в одинарной кавычке, вы экранируете одинарную кавычку, используя обратную косую черту:

echo 'Here is a single-quote: \'';
person Hammerite    schedule 01.08.2010

Вам нужно объединить ваши строки и переменные.

echo '<div id="panel1-under">Welcome ' . $_SESSION['username'] . '</div>';
person Ben Rowe    schedule 01.08.2010

Расширение переменной не работает внутри одинарных кавычек. Вы можете сделать либо:

echo "<div id=\"panel1-under\">Welcome {$_SESSION['username']}</div>";

or

echo '<div id="panel1-under">Welcome ' . $_SESSION['username'] . '</div>';
person jasonbar    schedule 01.08.2010
comment
Прохладный! +1. Я не знал, что вы можете использовать ассоциативные массивы, как в первом примере, я подозревал, что это сработает, и я проверил это сам, и это действительно работает, хотя я, вероятно, никогда не буду использовать это таким образом... - person zz1433; 02.08.2010
comment
В первом примере будет выведено предупреждение вроде неопределенной константы «имя пользователя», предполагая «имя пользователя». Лучше всего использовать синтаксис скобок: `echo ‹div id='panel1-under'›Welcome {$_SESSION['username']}‹/div›; - person JAL; 02.08.2010
comment
Метод {} также является единственным способом интерполяции подразмеров многомерного массива внутри строки в двойных кавычках. echo $a[b][c] выведет эквивалент $a[b] . "[c]" (что-то вроде 'Array[c]'), поскольку синтаксический анализатор PHP не жадный до размерных ссылок. - person Marc B; 03.08.2010

Вообще говоря, чтобы использовать одинарную кавычку внутри строки, которая использует одинарную кавычку в качестве разделителя, просто избегайте одинарной кавычки внутри строки.

echo 'That\'s all, folks';

Однако неясно, какова цель вашего кода.

echo '<div id="panel1-under">Welcome <?php echo "$_SESSION['username']"; ?></div>';

Поскольку вы уже используете PHP-код, <?php echo не нужен. Если вы только пытаетесь вывести содержимое переменной сеанса, вы можете использовать

echo '<div id="panel1-under">Welcome ' . $_SESSION['username'] . '</div>';
person apaderno    schedule 01.08.2010

Используйте следующий код

$data = $session['user'];
echo "a big string and $data   thats simple"
person abilashov    schedule 07.01.2014
comment
И как это отвечает на вопрос How to use single quotes inside single quotes?? - person Eel Lee; 07.01.2014

Вы можете использовать двойные или одинарные кавычки внутри двойных кавычек.

#Result: Hello "World" 's
$a = '"World"';   
echo "Hello $a 's";

#Result: Hello "World" 's    
echo "Hello \"World\" 's";

Вы также можете использовать двойные или одинарные кавычки внутри одинарных кавычек. (Не рекомендуется при построении SQL-запросов)

#Result: Hello World's "s
echo 'Hello World\'s "s';
person csandreas1    schedule 18.01.2020