Могу ли я повторять переменную с одинарными кавычками?

Можно ли эхо в одиночных кавычках с переменной?

пример

echo 'I love my $variable.'; 

Мне нужно сделать это, потому что у меня есть много HTML для эха.

Вы должны либо использовать:

 echo 'I love my ' . $variable . '.'; 

Этот метод добавляет переменную в строку.

Или вы можете использовать:

 echo "I love my $variable."; 

Обратите внимание на двойные кавычки, используемые здесь!

Если есть много текста, посмотрите на синтаксис Heredoc.

 $var = <<<EOT <div style="">Some 'text' {$variable}</div> EOT; 

В документации говорится:

Примечание. В отличие от синтаксисов с двойными кавычками и heredoc , переменные и escape-последовательности для специальных символов не будут расширяться, если они встречаются в одиночных кавычках.

Так что ответ – нет, не так.

Решение прост:

Не echo HTML.

До тех пор, пока вы не создаете, как частичные представления или материал , нет причин для эха HTML. Вместо этого вставьте PHP в HTML:

 <div class="foo"> <span><?php echo $value; ?></span> </div> 

Преимущества:

  • Не нужно помнить о выходе из кавычек.
  • Легче поддерживать HTML-код.

†: В этом случае heredoc [docs] является наименее худшей альтернативой.

Нет. Переменные (и специальные символы) расширяются только в строках, разделенных двойными кавычками. Если вы хотите включить переменную в строку с разделителями одной кавычки, вы должны ее конкатенировать:

 echo 'I love my '.$variable.'.'; 

Вы также можете избежать двойных кавычек вашего HTML, если вы предпочитаете использовать строки, ограниченные кавычками doble:

 echo "<a href=\"$url\">$text</a>"; 

Дополнительную информацию см. В руководстве по PHP для строк , особенно в части синтаксического анализа строк .

' не будет анализировать переменные. использование

 echo 'I love my '.$variable.'.'; 

или

 echo "I love my {$variable}. And I have \" some characters escaped"; 

не внутри строки, но вы можете выйти из строки и объединить переменную в.

 echo 'I love my '.$variable.'.'; 

Другой вариант состоял бы в том, чтобы избежать двойных кавычек.

 echo "I love my \"$variable\"."; 

Или просто входите и выходите из php для эхо-переменных (хотя и уродливых).

 I love my <?php echo $variable; ?>. With short tags enabled, I love my <?=$variable?>. 

Наконец, есть формат heredoc, который позволяет использовать как одиночные, так и двойные кавычки вместе с переменными.

 echo <<<HTML I love my $variable. '"... HTML; 

Взято из php.net: «Примечание: в отличие от синтаксиса с двойным кавычкой и heredoc, переменные и escape-последовательности для специальных символов не будут расширяться, когда они встречаются в одинарных кавычках».

Так что ответ – нет, вы не можете. Но вы можете сделать это так:

 echo 'I love my' . $variable . '.'; 

Таким образом, это будет более чистым.

Помимо решений, упомянутых другими пользователями, таких как конкатенация строк, вы можете использовать заполнители следующим образом;

Обратите внимание, что% s для строки.

 $variable = 'what ever'; printf('The $variable is %s', $variable); 

используйте escape-кавычку escape, чтобы окружить текстовую строку следующим образом:

 variable='my dog' echo \''I love ' $variable\' 

=> «Я люблю свою собаку»

Или простой способ:

 awk "\$1 < $variable"